La tarjeta Arduino DUE, tiene un potencial enorme para desarrollar aplicaciones complejas debido a sus capacidades de procesamiento y de entrada/salida. Sin embargo, aún presenta desafíos en su uso, debido a que el entorno de desarrollo para poderla utilizar aún se encuentra en etapa de pruebas (La versión 1.5.2 Beta del IDE al momento de escribir esto).

Una de las ventajas más grandes del Arduino DUE es su capacidad de actuar como teclado, mouse, o cualquier otro dispositivo USB, ademas de ofrecer la capacidad de Host USB. Sin embargo, esto tiene su costo en complejidad, ya que como mencionamos antes, el Arduino DUE tiene 2 puertos USB distintos, cada uno con su propiedades. Además, en el DUE, el funcionamiento del bootloader es bastante distinto a lo que estamos acostumbrados en el UNO, el Mega y las otras tarjetas basadas en microcontroladores AVR.

Una de las cosas que me sucedió mientras trabajaba por primera vez con el Arduino DUE es que no podía utilizar el puerto nativo para grabar o como dispositivo USB. La primera prueba que realicé con el puerto nativo fue compilar el sketch en el folder de ejemplos de emulación de un teclado USB y también el de emulación de mouse USB solo para encontrar que no funcionan debido a que solamente se instalaron correctamente los drivers para el modo de programación a través del puerto nativo que funciona única y exclusivamente mientras se carga el código mediante el bootloader.

Esta entrada está dedicada a entender un poco sobre el proceso de arranque y carga de programas en el Arduino DUE, esperamos que te sea de utilidad :).

¿Que puedo hacer si no puedo grabar un sketch usando el puerto USB nativo?

El Micro ATSAM3X8E solamente ejecuta el bootloader cuando la memoria Flash esta en blanco (esta es una de las razones por las que existe el botoncito de “Erase” en el DUE). Si no se instalan correctamente ambos drivers, solamente podremos usar el puerto nativo para programar mientras no haya un programa en la FLASH. Por lo tanto, la primera recomendación es que si no puedes realizar una grabación a través del puerto USB nativo, realices el siguiente procedimiento:

  1. Pulsa el botón de “Erase” por al menos un segundo
  2. Suelta el botón “Erase” y presiona el botón de reset
  3. El arduino DUE deberá identificarse ahora como “Bossa Program Port”
  4. Prueba a grabar nuevamente el programa con el IDE de arduino

Mientras no hay programa cargado en la memoria Flash el DUE se muestra como el puerto serie de Bossa.

Si la PC reconoció la tarjeta y pudiste grabar tu programa después de esto, ¡excelente!. Ahora falta instalar el driver que se utilizará para comunicarse con el DUE en tiempo de ejecución del sketch. Este permite que el DUE sea reconocido como puerto de comunicación serial y como un dispositivo USB, por ejemplo un teclado (dispositivo USB compuesto). Al instalar este driver podrás realizar la función de programación en cualquier momento, no solo cuando la memoria Flash esté vacía, ya que se podrá iniciar una secuencia de borrado y reset mediante software.

Los 3 drivers (archivos INF) que controlan las comunicaciones USB con el arduino DUE

¿Como instalo el driver?

Esta la parte que me dio algo de trabajo, y es que aunque parecería que es algo que debe pasar en automático en mi caso el driver del DUE no se instaló correctamente. Si al cargar y ejecutar un sketch no puedes ver un puerto serie asociado al DUE o este aparece solamente como “Arduino DUE” con una exclamación en el administrador de dispositivos prueba lo siguiente:

  • En la carpeta de instalación del IDE localizar los archivos INF. Normalmente se encuentran en la carpeta drivers dentro del directorio de instalación.
  • Con un editor de texto abrimos el archivo Arduino DUE.inf
  • Localizamos las lineas siguientes y hacemos los cambios que se indican

Localizamos lo siguiente:

Y lo reemplazamos como sigue:

Esto permite que Windows detecte el puerto serial y el arduino DUE como un dispositivo USB compuesto. Normalmente en Windows XP no se presentan problemas, pero en windows 7 hemos tenido que hacer este procedimiento. Al final nuestro archivo .inf debe quedar de la siguiente forma:

 

¿Como funciona el bootloader?

No entraremos en mucho detalle, pero de manera general diremos que el bootloader del ATSAM3X8E esta basado en tecnología propietaria de Atmel para su serie de microcontroladores SAM3 y otras. El SAM-BA (SAM Boot Assistant) puede recibir los datos para grabar en la memoria flash de 2 fuentes distintas: El UART y la interfaz USB (CDC). Los diseñadores del DUE optaron por utilizar una implementación open source de esta tecnología conocida como BOSSA. Es importante saber que el funcionamiento del bootloader y la interfaz serie virtual sobre el USB es diferente mientras se ejecuta un sketch.

Como ya dijimos el DUE solo ejecuta el bootloader cuando la memoria flash esta en blanco. El proceso de programación ocurre de manera distinta según el puerto de programación al que conectemos la tarjeta:

  • En el Puerto de programación el ATMEGA16U2 este chip se encarga de generar las señales de borrado de flash y de reset, de manera que siempre que se abre este puerto a 1200 bps indica al ATMEGA16U2 que debe generar las señales de borrado y reset para el microcontrolador principal, permitiéndonos usar el bootloader serial (UART) para cargar el programa.
  • En el puerto Nativo, el software en el ATSAM3x8E monitorea cuando se abre un puerto serie virtual a 1200 bps. Cuando esto sucede, se produce un borrado de la memoria por software y se reinicia el micro para comenzar la carga del programa a la memoria flash mediante el bootloader por USB-CDC.

Si ya tienes algo de experiencia con en el desarrollo de aplicaciones con Arduino, observarás que el proceso de arranque del arduino DUE y la forma en la que se activa el bootloader es bastante diferente a las otras tarjetas. Esperamos que con este artículo hayamos arrojado algo de luz en el tema y les sirva a todos para instalar sus placas exitosamente.

Hasta nuevo aviso si se requiere factura para cualquier orden el pago se tendrá que realizar vía Deposito Bancario o Transferencia. Agradecemos su comprehensión. Ignorar