Paso 13: Depurar el firmware todo lo añadido
La mejor parte en la escritura un firmware es el momento cuando todo funciona en el primer intento. Tiendo a escribir mucho código antes de realmente salir a probarlo, así que si funciona en el primer encendido, es incluso mejor. Por desgracia y naturalmente esto no era el caso, tuve que hacer un buen montón de depuración para obtener el software para funcionar de la manera imaginaba.
Desde la depuración puede y va tardar más que escribir el código sí mismo - prepararse para lo peor. Hay una imagen bastante divertida y realista en la web, que muestra las etapas de depuración.
Cómo depurar
Para averiguar dónde está el contador de programa en un momento dado, se debe pensar en formas de llegar a algún tipo de retroalimentación desde el PIC. La manera más fácil es utilizar algunos LED y les luz a dado puntos en lo code - esta manera que usted sabrá con certeza, que se ejecuta el código escrito allí. Desde que tuve un inusitado 2 x 4 mujer encabezado a bordo, diseñé una pequeña tabla para propósitos de depuración, un tablero que se conecta a la cabecera. De esta forma que he podido identificar si o no el PIC es tomar las decisiones correctas en el algoritmo. Era relativamente fácil de poner en su lugar. Después de un tiempo los LEDs simplemente no fueran suficiente, y empecé a pensar en algún tipo de depuración puerto, tal vez una pantalla SPI que muestra las distancias registradas. No tomó mucho tiempo darse cuenta de que - por casualidad - sacó dos alfileres PIC muy importante a este conector de 2 x 4: los pines RX y TX del puerto serial. Sacó un convertidor serie-USB ordenado de e-bay hace un tiempo (enlace) y conectado a los pines.
El hardware estaba listo, sólo necesitaba algún firmware para inicializar el puerto con los parámetros necesarios y configurar la velocidad de la comunicación. Esto puede hacerse mediante la lectura de la sección de la hoja de datos, he hecho esto por tiempos de muchos muchos de mano, así que esta vez que decidí usar una calculadora para el desarrollo más rápido. Revisa las fotos, uno de ellos tiene esta limpio poco-velocidad en baudios (bits/segundo) generador - cosas buenas! Utilizar 48 velocidad de oscilador [MHz] y había hecho los cálculos para 115200 [bits/segundo].
Después de terminar la configuración inicial, escribí algunas funciones comunes que sabía que necesita y ponerlo a prueba. El puerto serie, trabajado en el primer ensayo, mi mejor puerto de depuración fue listo para usar! Sólo necesitaba un programa de terminal para poder visualizar los datos enviado al PIC. Fácil: he descargado Hercules desde aquí: link.
Ventajas de tener el puerto serie
Después de el puerto serie ya en funcionamiento, mi vida llegó a ser diez veces más fácil. Cada variable, cada medida, todo lo que se escribe dentro de la foto llegó a ser accesible a través de este puerto de depuración. Rápidamente encontré que la variable que almacena el máximo de las mediciones de 11 distancia fue "unsigned char", pero algunas lecturas fueron más grandes de este tipo puede caber en, cambié a unsigned int con eso.
También me di cuenta de que la distancia medida es suficientemente precisa, pero no tener en cuenta el hecho de que el robot necesita algo de espacio para poder girar a la izquierda o derecha. Resta 8 [cm] del comando "run adelante" final y solucionó este problema.
Tan pronto como el robot va las distancias derecho comparadas con las distancias que mide, quité la conexión de serie y poner que el tablero LED de nuevo dentro.