Acciones

USBTINY V4

De CoffeeBrain-Wiki

100714-usbtiny-usbtinyFoto.jpg

Descripción:

El programador "Uniandes - USBTinyISP" se encuentra basado en el proyecto hospedado en [1]. El diseño del proyecto USBTinyISP es completamente libre por lo que la versión "Uniandes - USBTinyISP" está adaptada a los materiales que se pueden conseguir localmente. Se ha buscado un diseño optimizado en costos por lo que los materiales están por los $12.000= pesos colombianos (Sin contar con la fabricación de la tarjeta).

Autores:

Editado por:


A continuación se describen los aspectos relacionados con hardware y software, necesarios para realizar la implementación del programador Uniandes - USBTinyISP.


1 Dispositivos Soportados

32UC3A0512 ATXMEGA128A4 ATXMEGA64A4 ATXMEGA32A4 ATXMEGA16A4 ATXMEGA256A3B
ATXMEGA256A3 ATXMEGA192A3 ATXMEGA128A3 ATXMEGA64A3 ATXMEGA256A1 ATXMEGA192A1
ATXMEGA128A1REVD ATXMEGA128A1 ATXMEGA64A1 ATMEGA6450 ATMEGA3250 ATMEGA645
ATMEGA325 AT90USB82 AT90USB162 AT90USB1287 AT90USB1286 AT90USB647
AT90USB646 ATmega32U4 ATMEGA128RFA1 ATMEGA2561 ATMEGA2560 ATMEGA1281
ATMEGA1280 ATMEGA640 AT90PWM3B AT90PWM2B AT90PWM3 AT90PWM2
ATtiny2313 ATMEGA328P ATMEGA168 ATTINY861 ATTINY461 ATTINY261
ATMEGA8535 ATMEGA8515 ATMEGA161 ATMEGA6490 ATMEGA649 ATMEGA3290P
ATMEGA3290 ATMEGA329P ATMEGA329 ATMEGA169 ATMEGA163 ATMEGA162
ATMEGA1284P ATMEGA644P ATMEGA644 ATMEGA324P ATMEGA164P AT90CAN128
ATMEGA128 ATMEGA103 AT90S8535 AT90S8515 AT90S4434 AT90S4433
AT90S2343 AT90S2333 AT90S2313 AT90S4414 AT90S1200 ATtiny9
ATtiny5 ATtiny4 ATtiny84 ATtiny44 ATtiny24 ATtiny85
ATtiny45 ATtiny25 attiny88 ATMEGA88 ATMEGA48 ATTINY26
ATMEGA8 ATMEGA32 ATMEGA16 AT90CAN32 AT90CAN64 ATMEGA64
ATtiny15 ATtiny13 ATtiny12 ATtiny11

2 Software

Tanto para Linux como para Windows existen versiones del software necesario para utilizar el programador. Para utilizarlo solo basta conectarlo y ejecutar a través de lineas de comandos el programa avrdude, el cual ha de estar previamente instalado. Para obtener mayor información acerca de avrdude se puede visitar la pagina principal del proyecto.

Nota:Para Windows se recomienda la instalacion de WinAVR para facilidades de uso del Avrdude

2.1 AVRDUDE

AVRDUDE - AVR Downloader Uploader [2] Es una aplicación por linea de comandos que permite descargar y cargar programas en la memoria de los microcontroladores con núcleo AVR8. Esta pequeña aplicación puede utilizar diferentes interfaces de hardware para realizar la programación de la memoria de los microcontroladores. Dentro de estas múltiples interfaces está la versión t2313, que hace referencia a un programador basado en Atiny2313.

2.2 Linux

A continuación se listan los paquetes necesarios para la instalación de las herramientas de desarrollo para AVR con Ubuntu. Si necesita ayuda con la instalación de paquetes consulte: [3]

Ejecute en el shell:

sudo apt-get install ddd avrdude avr-libc gdb-avr gdb gcc-avr simulavr

Nota: En algunas distros de Linux es posible que deba crear las siguientes reglas para el manejador de dispositivos de configuración. Para realizar esto agregue al siguiente archivo /etc/udev/rules.d/10-usbtinyisp.rules los reglas así:

Editar/crear el archivo:

sudo nano /etc/udev/rules.d/10-usbtinyisp.rules

Adicionar las reglas en el archivo:

SUBSYSTEM=="usb", SYSFS{idVendor}=="1781", SYSFS{idProduct}=="0c9f", GROUP="adm", MODE="0666" 

Por último debe reiniciar el servicio del udev o reiniciar el equipo:

sudo /etc/init.d/udev restart

3 Hardware

El programador consta de:

  1. Un puerto USB con conector tipo A
  2. Un conector ISP descrito en la figura.
Vista frontal

Nota: En la siguiente imagen puede observar el esquemático (click en la imagen para ampliar):

Esquemático del programador

3.1 Archivos de fabricación

Los archivos de diseño en KiCAD son: Archivo:UsbTiny4 kicad.rar


Nota: Para visualizar los archivos de fabricación puede usar el paquete gerbv de ubuntu

3.2 Lista de componentes

REFERENCIA VALOR FOOTPRINT
D1 Led-3mm through hole
D2 Led-3mm through hole
D3 3.6V through hole
D4 3.6V through hole
IC1 ATTINY45-P DIP8
P1 USB-A USB-A
P3 CONN_3X2 CONN_3X2
R2 1.5k through hole
R3 1.5k through hole
R6 27R through hole
R7 27R through hole
R8 1.5k through hole
R9 220 through hole
R10 330 through hole

4 Ejemplos de funcionamiento

Aca Archivo:Firmware.rar puede encontrar los archivos de programación. El archivo vusbtiny.hex permite programar un microcontrolador para que cumpla la función de programador.

4.1 Programación del dispositivo

Para programar el dispositivo como programador ejecute:

sudo avrdude -c usbtiny -p t45 -U flash:w:vusbtiny.hex
sudo avrdude -c usbtiny -p t45 -V -U lfuse:w:0xe1:m -U hfuse:w:0x5d:m -U efuse:w:0xff:m

Nota: En este caso se usa el pin de reset del microcontrolador como IO, por tal motivo no es posible volverlo a progamar. Para uso en Windows omita la sentencia "sudo"

4.2 Programación ATmega 168A

Para realizar una programación desde la USBTiny a la ATmega168, se puede descargar el programa AtmelStudio, el cual se puede encontrar en el siguiente link [4], el cual nos permitirá desarrollar un programa en C, y ademas nos dejara generar la solución en un .hex, que sera el que se monte a través de la USBTiny a la ATmega168A. Para comprobar el funcionamiento correcto del integrado al programar se podrá utilizar el siguiente ejemplo de prueba Archivo:BlinkingLed.rar. Para probar el ejemplo debemos montar en la protoboard, de la manera como se muestra en la siguiente imagen, todos los componentes.

El valor de los condensadores es de 20pF o 15pF, y el valor del cristal es de 16mHz.


Montaje en protoboard


Después de haber realizado el montaje como se encuentran en la gráfica anterior, debemos hacer la respectivas conexiones de MOSI, MISO, SCK, RST, GND y VTG de la USBTiny a la ATmega168a, la ubicación de dichos pines se encuentra de forma explicita en el datasheet del ATmega168A, que esta en el siguiente link [5]

Una vez tengamos todo conectado, podemos proceder a cargar el programa de ejemplo, de la siguiente manera.


sudo avrdude -c usbtiny -p m168 -U flash:w:Led.hex

4.3 Acerca de los FUSIBLES

Los FUSES son secciones en la memoria del microcontrolador que configuran comportamientos específicos del mismo, como por ejemplo la configuración de la fuente del oscilador. A continuación se puede ver un ejemplo para programarlos -U l/h/efuses:

sudo avrdude -c usbtiny -p t2313 -U lfuse:w:0xff:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m

En el siguiente link se podrá encontrar una Calculadora FUSES AVR8 [6]

4.4 Programación de distintos dispositivos

A continuación se realiza una breve explicación por partes del comando que se ejecuta para efectuar la programación. Ejemplo:

sudo avrdude -c usbtiny -p t2313 -U flash:w:main.hex -U lfuse:w:0xff:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m

Explicacion:

sudo avrdude se le indica a la consola que por medio de permisos de super-usuario se llamara a avrdude para que programe un dispositivo

-c usbtiny indica que programador se usará, en este caso usbtiny

-p t2313 se indica que micro-controlador se programará, en este caso es un attiny2313 con que hace relacion a "t2313", para otros casos (Ej. m16 para atmega16) puede consultar el manual de avrdude

-U flash:w:main.hex indica cual archivo programara, en este caso es "main.hex". Este archivo resulta de la compilación del proyecto que este realizando.

-U lfuse:w:0xff:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m indica que fusibles programará (Vease en la seccion anterior "Acerca de los FUSES")

Nota: si usted lo desea, puede programar por separado los fusibles y el archivo de programación. No es necesario programar los fusibles cada ves que usted cargue un programa, estos siempre permanecerán como usted los haya programado la ultima vez.

5 Elementos a tener en cuenta

  1. Recuerde que para programar cualquier micro por medio del puerto SPI, este debe contar con una resistencia de pull-up en el pin de Reset. (Depende del microcontrolador)
  2. En el siguiente enlace puede encontrar un ejemplo explicado de un proyecto base para programa en lenguaje c. Ejemplo
  3. Si desea borrar cualquier programa de su microcontrolador, puede tomar como ejemplo la siguiente linea:
sudo avrdude -c usbtiny -p m168 -e