Skip to content

Arduino: Depuración serie (I)

4 mayo, 2013

Uno de los puntos débiles en Arduino es la depuración.  Es inevitable cometer errores y encontrarlos puede resultar un infierno si no tienes manera de seguir el código en ejecución.   Los IDEs de la mayoría de µC incorporan un depurador potente con un nivel alto de detalle, permitiendo inspeccionar y modificar variables, cambiar el punto de ejecución, ejecutar paso a paso, alterar marcadores (flags) del controlador, etc.  Pero Arduino no contempla por defecto la depuración del código y podemos hacer poco más que utilizar las funciones de salida serie, aunque esto nos obliga a depurar desde el programa en ejecución y no desde el entorno de desarrollo.

En el ejemplo del Hola mundo vimos cómo configurar el monitor serial y como mostrar información por pantalla.  Se puede activar la comunicación serie con una instrucción como Serial.begin(9600) y luego lanzar Serial.println(“Estamos en el paso X”), para informarnos de los puntos por los que pasó el programa; esto a veces es suficiente.  Otras veces necesitaremos mostrar el valor de una variable interna, lo haremos igualmente con Serial.print, Serial.println o Serial.write pasándole el la variable formateada si fuera preciso.

Todo esto es válido durante el proceso de pruebas, pero seguramente queramos que en el proyecto final no se muestre información alguna de depuración, para ello tenemos varias soluciones:

Por ejemplo, borrar el código de depuración cuando determinemos que el proyecto está cerrado (aunque no es la opción más eficiente).

Hacer que el código de depuración sólo se ejecute si se asigna alguna directiva específica, por ejemplo:

#ifdef DEBUG
#define DEBUG_PRINT(x)  Serial.print(x)
#else
#define DEBUG_PRINT(x)
#endif

De este modo, en nuestro código podremos controlar la información de debug llamando a DEBUG_PRINT(“información de interés”);  Si al principio del código ponemos esta directiva #define DEBUG, entonces cualquier llamada a DEBUG_PRINT se traducirá en un Serial.print, en caso contrario las llamadas a DEBUG_PRINT no harán nada.  Este  mecanismo de depuración es habitual y lo puedes encontrar explicado en el foro de Arduino.

Existen otras maneras de depurar pero éstas son las más sencillas para empezar.

Recuerda que nos mudamos. nuestra nueva dirección es:

http://arrizen.com

Anuncios

From → Arduino

Dejar un comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: