Paso 3: Una digresión menor depuración.
Si eres como yo (y cada otro programador en el mundo) probablemente han experimentado épocas cuando el código de "sin errores" cuidadosamente has escrito y compilado no hace lo que usted espera. Tal vez simplemente no hace nada! ¿Cuál es el problema? ¿Cómo vas a saber?Afortunadamente, existen varios enfoques para conseguir cosas para trabajar. (Obtener este libro en un excelente tratamiento del tema de la depuración. http://www.debuggingrules.com/) Me gustaría ofrecer algunas sugerencias simples relacionados con el tema de la depuración de aplicaciones del microcontrolador.
Primer paso es construir sobre lo que sabes. Si se ha llegado a blinkenlight a trabajar una vez, luego utilizarlo de nuevo para ver donde están en su programa. Me gustaria tener el LED parpadeará dos veces para señalar el comienzo del programa. Puede poner el código en hacerlo inicialmente en el comienzo de su programa. Una vez que usted sabe que nada está mal con el hardware, crear una función para hacer el parpadeo. Esta es la función que utilizo.
/*------------------------------------------------------------------------
** blinkEm - función a parpadear LED usando PD4
** PD4 debe estar configurado como salida.
** ---------------------------------------------------------------------*/
void blinkEm (uint8_t cuenta) {}
mientras (cuenta > 0) {}
PORTD = _BV(PD4);
_delay_ms(1000);
PORTD = ~ _BV(PD4);
_delay_ms(1000);
cuenta--;
}
}
Ahora es posible utilizar esta función en varios puntos en el código como una señal de que el código ha ejecutado hasta ahora. Conocer el código corre significa que puede examinar cuidadosamente cada sección que ha correr, pero no hace lo que espera, para encontrar errores.
Cambiando una cosa a la vez es una técnica clave para la depuración también (descrito en la referencia anterior). Este método clásico funciona junto con el "divide y vencerás": pasos de bebé para agregar funcionalidad de forma incremental. Esto puede parecer como un acercamiento lento, pero es no casi tan lento como tratando de depurar una gran parte del código de trabajo no todos a la vez.