Monitor Serie. Debug Serie

por | 26 mayo, 2016

A la hora de hacer depuración de un sketch, tanto a la hora de desarrollarlo como cuando esté en producción y se detecten fallos, disponemos del puerto serie para que muestre datos de errores o datos de variables internas para la comprobación del funcionamiento interno que nos permite saber si todo va bien o que está fallando.

Es similar a cuando vemos a un técnico que conecta una consola a un equipo como una máquina climatizadora o en el taller cuando colocan la máquina de diagnóstico al coche para saber qué está pasando.

A la hora de realizar nuestro programa debemos establecer qué parámetros queremos tener monitorizados y sacarlos por el puerto serie para hacer el debug. Incluso podemos pensar en poner una pantalla LED que nos saque por un segundo puerto serie y nos sirva de pantalla de debug.

Un técnica para hacer debug es usar la directiva de preprocesamiento #define que permite asociar a una palabra un valor sin que ocupe espacio en memoria, lo que hace el compilador es sustituir esa palabra por el valor definido. Más información en:http://arduino.cc/en/pmwiki.php?n=Reference/Define

Además para mejorar la funcionalidad de #define tenemos otras directivas de preprocesamiento: #if y #endif que son directivas lógicas, es decir, no sólo no se ejecutan sino que ni se compilan. Las directivas de preprocesamiento nos permiten añadir o quitar código a nuestro antojo antes de compilar para tener una versión para debug o detección de errores y otra versión de producción.

A la hora de hacer debug de nuestro sketch, usaremos Serial.print y sacaremos por el puerto serie para leer por consola aquellas variables o elementos que nos interese monitorizar y saber lo que está pasando con ellas en tiempo real.

Ejemplo:

#define DEBUG 0

void setup(){

inicializa();

}

void loop(){

compruebaTemperatura();

#if DEBUG

imprimeVariablesDebug();

#endif

}

Más adelante veremos herramientas propias para hacer debug, pero para ello será necesario hardware adicional y otro software que no es el IDE de Arduino sino el Atmel Studio.

Ejercicio20: Hacer un programa sencillo que imprima cosas por puerto serie, la memoria libre, etc… y seleccionar que haga una cosas u otras en función de la directiva de preprocesamiento activada. Comprueba los tiempos de loop, el tamaño ocupado en la flash y el uso de memoria con las opciones DEBUG y VERBOSE y sin ellas.

Solución: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio20-Debug

EXTRA – Programación Arduino

Muchos más ejemplos y prácticas para hacer: http://arduino.cc/en/Tutorial/HomePage

Una buena chuleta para tener a mano cuando programemos. Cheat Sheet: https://dlnmh9ip6v2uc.cloudfront.net/learn/materials/8/Arduino_Cheat_Sheet.pdf

Más código:

Ver este ejemplo de programa y fijarse en la estructura: https://github.com/jecrespo/Home_Power_Meter/blob/master/Home_Power_Meter.ino

Deja un comentario