Valkertown Blog

I used to write about electronics…

Valkertown Blog header image 2

AT90USB128

December 21st, 2006 by Carlos Perilla

Bien, por fin voy a trabajar un poco con USB y AVR.

El AT90USB128 Hasta ahora es una versi’on muy similar al ATMega128 pero se sacrifican algunos modulos funcionales por el controlador USB. El que estoy usando viene en empaquetado QFN64 algo molesto para soldar en el prototipo pero se gana algo de espacio en el PCB a la hora de hacer el final. Es pin a pin compatible con otras versiones de AVR de 64 pines, pero no con el ATMega128 para la programaci’on ISP pues el ATMega128 me consta que hace algunos cambio para esta programaci’on y en este chip estos pines los de la USART0 se utilizan para el driver USB.

Mi versi’on antigua del UISP reconocio el chip como un ATMEGA103 alike, la versi’on CVS lo reconoce como tal, revise el c’odigo fuente del programador e hice unas actualizaciones para que le pusiera bien el nombre y lo tratara como un ATMEGA128 internamente, y con las correcciones en los tamagnos. Las pruebas posteriores han indicado que no hace falta hacer mayores cambios al programador para que funcione. Escribir/leer fusibles, flash y eeprom ha sido exitoso hasta ahora.

Una vez superada esta etapa que me preocupaba sobre las otras, voy a probar GCC 4.1.1 para AVR y Binutils 2.17 y AVR-LIBC CVS por que revisando los changelogs y los fuentes, parece que tiene ya soporte con nombre para el at90usb128.

En unas horas que termine la experimentaci’on har’e un informe de que cambios hay con respecto a el tutorial anterior sobre el tool chain AVR.

EOT

Tags:   · · View Comments

  • valkertown

    Bueno para empezar trabajar en windows es algo inconveniente para empezar con el USB, por que, todo el proceso de inicialización es casi imposible de controlar en el host.


    Le recomiendan el HID, pues es la interface más simple del USB, ahora mismo yo estoy trabajando con esta.


    El USB aun con estos perifericos del microcontrolador es bastante complejo, requiere de paciencia y un analizis muy concienzudo de toda la documentación y el código.


    Si él código de ATMEL y sus ejemplos le funcionan bien ha contado con más suerte que yo.


    En el caso de mi compilador GCC, parece que ATMEL se encargo de que compilara limpiamente su código, pero al parecer no de su correcto funcionamiento.


    Ahora esta es una opinión preliminar pues aun no he resuelto el problema particular que me aqueja.


    De cualquier forma, todos los comentarios y experiencias con el USB son bienvenidas, espero luego publicar algo que pueda servir como una buena fuente de información sobre el desarrollo USB.


    EOC

  • Mario Sardon

    Yo tambien he trabajado desde hace un tiempo con los ATMega y tambien con los AT89C51xx. Ahora pretendo usar el AT89C5130A que posee USB. He descargado algunos pdf de ATMEL que me sugieren usar archivos como ATUSBHID.dll y user_application.c. Recien incursiono en el mundo USB (a este nivel) asi que cualquier comentario respecto a estos archivos, si has tratado con ellos, sera de mucha ayuda.

  • valkertown

    Primero gracias por su comentario, ya que este es quiza uno de los temas más importantes.

    El modo de programación de este micro controllador es exactamente igual a todos los ATMega e incluso a la gran mayoria de microcontroladores de ATMEL, todos los chips de la serie ATMega y esto AT90USB en particular soportan diferentes métodos de programación, que son parallelo,serial y jtag.


    Los modos de programación paralelos no los he utilizado con anterioridad por lo que no se del tema, sin embargo en los data sheets estan explicados al detalle.


    Los modo que más he utilizado en particular es el ISP (Incircuit/Insystem Serial Programming) y JTAG, en si son muy similares con la diferencia que con JTAG se puede hacer incircuit debugging.


    Ahora el STK500 trae un conector para hacer ISP, ya que los AT90USB vienen en empaquetado para montaje superficial y el STK500 no trae un socket para estos, el STK525 si trae un socket y se puede usar directamente.


    En particular yo hago todas mis tarjetas de desarrollo, e incluso el programdor es fabricado en el laboratorio, ya que este es terriblemente sencillo de fabricar.


    Ahora para ser especifico, el método ISP que es el favorito por su sencillez consta de 4 Lineas MISO, MOSI,SCK,RESET. Basicamente es un puerto serial sincronico con un handshaking adicional para inciiar la programación. Ahora los diferentes cables que existen, paralelo o serial. Hacen la conversión de estos pines de E/S al computador para hacer la programación.


    Ahora el KIT USB que vende ATMEl es bastante diferente por que este trae es un bootloader USB, lo que permite que todo se haga desde el puerto USB. El proceso como todo bootloader, el bootloader carga un driver USB que permite cargar nuestro firmware al dispositivo y luego lo pone andar.

    Ahora en el computador se debe tener el driver/modulo que sepa hablar con el bootloader. En Linux nos e de la existencia de este y no he tenido la necesidad de utilizarlo así que no tengo experiencia con este método.


    Ahora si quiere saber más sobre el proceso de programación ISP, el proyecto UISP tiene el código fuente libre y soporta todos los STK y algunos cables exoticos para programar los dispositivos y con este estoy haciendo todo el desarrollo para el AT90USB128.


    Eso es todo por ahora, estoy atento a nuevas inquietudes y espero que esto responda de alguna forma sus preguntas.

  • Gerardo

    Mas que un comentario.. es una consulta referida al AT90USB128. Segun lo del articulo… su modo de programacion es muy similar al ATmega128, yo he programado con la familia de ATmega y utlizo para ello un programado AVRisp que lo provee la misma compañia… tambien he utilizado el STK500. Y ahora para programar el AT90USB128 tengo aun ciertas dudas en cuanto a su modo de programacion… puesto que no sé si acepta el mismo modo de programacion ISP desde el AVRisp que yo usaba para los Atmega. En la pagina de ATMEL… hacen referencia a un programador llamado STK525.. pero en lugar de resolverme las dudas.. me agrega mas.. puesto q menciona modos de programacion con el STK500, con el mkll, con algo q denominan USB bootloader (para reprogramar desde el mismo USB), con el JTAG. Bueno.. mi consulta respecto a este nuevo microcontrolador con USB… es con que lo puedo programar? (el mismo AVRisp es compatible??).


    De antemano muchas gracias por alguna posible respuesta

blog comments powered by Disqus