lunes, 18 de agosto de 2014

Arduino atmega644p : Un arduino ampliado

En ocasiones los puertos disponibles en un Arduino basado en el atmega328 no son suficientes.
Tenemos varias opciones utilizando otros chips de Atmel: atmega1284p, atmega644p, atmega324p.
Mi experiencia con el atmega1284p no es muy buena, ya que hay chips con un defecto de fabricación que hace que la comunicación mediante el primer puerto serial (pines 14 y 15) sea muy difícil. Por lo visto es un problema de ruido que se genera al estar estos pines muy cerca de los pines del cristal. (Hay una versión experimental que utiliza el UART1 optiboot).

Sin embargo al utilizar el chip atmega644p los resultados son muy satisfactorios.

El procedimiento para "crear" un Arduino con un atmega644p es similar al utilizado con un atmega328:

  • Armar el hardware : Cristal externo de 16Mhz , interruptor para reset y led a un puerto para pruebas.
  • Grabar el bootloader mediante un Ardunino en modo ISP :  Instructables.
  • Utilizar una interfase serial/USB para subir los programas.


En la imagen se muestra una versión en protoboard que incluye un regulador de 5V, un panel LCD de dos lineas, un célula fotoeléctrica y un termistor NIC. La lectura de los sensores se muestra en el LCD junto con el tiempo en segundos desde el inicio.

En el caso del bootloader hay varias opciones disponibles. 
  • La primera que utilicé fué la versión de Sanguino . El problema con esta versión es que los puertos analógicos están mapeados de forma diferente al Arduino tradicional.
  • Otra opción es mighty-1284p haciendo varias modificaciones en el archivo boards.txt
  • La versión que utilicé fue la de leonardomiliani.com para el IDE 1.0.5
En el archivo comprimido de leonardomiliani.com se indican los problemas de conexión con los chips 1284p y 644p  y las posibles soluciones. En mi caso , utilizando el 644p,  pude subir programas conectando directamente los cables RX/TX a los pines del chip.

Al probar el comportamiento del chip con dieferentes programas pude comprobar que un programa de validación de libreria de punto flotante que en el Arduino con 386p se detenía en las pruebas de coseno, ahora finalizaba correctamente. Puede ser que la razón sea que en el 644p hay mas RAM disponible.

No hay comentarios:

Publicar un comentario