Saturday, April 7, 2012

Mi Experiencia con USBasploader

Como parte de mi desarrollo con Arduino y el microcontrolador Atmega328 decidi intentar probar el USBaspLoader. Si conoces el Arduino has visto que el mismo cuenta con un circuito que convierte de USB a serial TTL. En versiones anteriores se utiliza el FTI mientras que el Arduino UNO utiliza el Atmega8U2 o similar para traducir de USB a serial TTL. Ahora, la diferencia del USBaspLoader es que permite tener el Atmega328 sin tener que utilizar este convertidor sino solamente el chip y un simple circuito.
Si eres como yo, esto me parecio fantastico asi que junte algunas piezas y decidi montarlo. Y increiblemente funciona como esta documentado. Claro si lo vas a intentar asegurate de utilizar los fuses correctos, los cuales aparentemente estan en el Makefile por microcontrolador. El setting del micro que estoy utilizando los vi escritos en un blog por ahi.


El diagrama del circuito utilizado puede ser encontrado en el siguiente enlace https://metalab.at/wiki/Metaboard
Esto es perfecto si tienes todos los componentes exactos. Peor que pasa cuando se te terminan las resistencias exactas. Pues eso fue lo que me paso, asi que buscando por intertet. Primero el "pull-up" resistor que es de 1.5K en el diagrama del metaboard lo cambie por uno de 2.2K segun se puede ver en el diagrama de usbasp (http://www.fischl.de/usbasp/) asi que este valor si tienes 1.5K o 2.2K funciona igual (almenos asi me funciona a mi).
Las otras resistencias so las de 68ohms, estas tambien se me terminaron. Gracias al internet pude ver unos  post de alguien que mencionaba que valores entre 47 ohms y 100ohms deberian ser buenos como quiera. Entiendo que esto lo lei en el web de avr-freaks, pero no tengo el link exacto. Anyway, estas resistencias aparentan ser para controlar la resistencia asi que decidi utilizar 100ohms y para mi sorpresa funciono.
Asi que este serian valores probados en 5V y con el Usbasploader conectado a una laptop con Ubuntu.

Resistencias y valores alternos que en mi caso funcionaron
68ohms ==> 100 ohms
1.5K ohms ==> 2.2K ohms

Mi experiencia con el usbasploader es de algunas horas solamente y con los microcontroladores tampoco es mucha, asi que disculpen la falta de detalles.

Antes de quemar el bootloader en el atmega, recuerda programarle los fuses correctamente. Esta es la configuraciĆ³n que utilizo.

avrdude -c stk500v1 -p atmega328p -b19200 -P /dev/ttyACM0 -U lfuse:w:0xf7:m -U hfuse:w:0xdA:m -U efuse:w:0x03:m

Nota: En mi caso, he creado un procesador alterno llamado atmega328np con el ajuste del signature del chip. Esta configuraciĆ³n es importante ponerla en el .conf de avrdude. Claro, solo para lo que usamos chips alternos, los demas deben pueden quedarse como esta escrito..