1
Gu´ıa Gu´ ıa 15 - Uso de AVR-ISP500 Prof. Marco Rivera Abarca Universidad de Talca, Depto. de Tecnolog´ıas ıas Industriales, Curico, ´ CHILE E-mail:
[email protected] 1 Jorge Guerrero Rivas, 2 Claudio Uribe Figueroa, 3 Raul ´ Mel´endez endez Tobar Ayudantes del M´odulo odulo 1
[email protected], 2
[email protected], 3
[email protected]
Abstract: En la presente gu´ıa ıa se entrega la informaci on o´ n necesaria para la utilizaci on o´ n del programador AVR-ISP500, ´ el cual es un programador utilizado para cargar los c odigos en microcontroladores de la familia Atmel. Dentro de esta ´ de este programador, del como conectar hasta el c omo gu´ıa ıa se dan ejemplos claros de la utilizaci on o´ mo cargar el c odigo o´ digo desde el computador al microcontrolador. ´ I. I NTRODUCCION AVR-ISP500 es un programador USB de bajo costo para la familia de microcontroladores AVR. El protocolo implementado en el programador STK-ISP500 fue definido por Atmel el cual lo hace compatible con una rango de herramientas, entre las cuales se encuentra AVRStudio y AVRdude. Por lo cual existen dos formas de utilizar el AVR-ISP500, una de ellas es mediante AVRStudio y la otra por medio de AVRdude.
Figura 1. AVR-ISP500 VR-ISP500..
I I . C ARACTER´ISTICAS I STICAS Este programador posee las siguientes caracter´ısticas: ısticas: • • • • • • •
• •
Es compatible con la STK500v2. Funciona con AVRStudio, WinAVR, WinAVR, AVRdude AVRdude y muchos otros softwares compatibles con STK500v2. Posee un puerto USB para ser conectado al computador. Tiene un LED bi-color para determinar el estado actual de operaci´on. Posee ambos conectores de Atmel, el ICSP10 y ICSP6. Es alimentado por USB. Posee una salida de reloj en el ICSP10, en el pin 3 del mismo, este clock sirve para algunos AVR’s con el fusible de clock externo habilitado. Soporta voltajes de entrada desde 1.8[V] hasta 5.5[V]. Las frecuencias del ISP var´ıan ıan desde 5[kHz] hasta 2[MHz]. ´ III. A DVERTENCIA SOBRE LA ELECTROEST ATICA
El AVR-ISP500 no debe estar bajo potenciales electrost´aticos aticos altos. Se deben aplicar las pr´acticas acticas generales de trabajo con aparatos sensibles a la est´atica atica cuando se trabaje con este programador.
2
IV. REQUERIMIENTOS
Cables: un cable USB A-B de un largo no m´as de 1.8[m] (menor distancia menor probabilidad a que falle). Software: Es necesario tener instalado un compilador para poder cargar los c´odigos al microcontrolador, para esto se puede utilizar uno de la siguiente lista: • • •
AVRStudio, de Atmel (es con el que se trabajar´a en este curso). AVRdude, incluido en la distribuci´on de WinAVR. O cualquier otro software el cual soporte el protocolo de la STK500v2. V. M ICROCONTORLADORES SOPORTADOS
La siguiente lista de microntroladores de AVR son soportados para programar: • • • •
AVR’s cl´asicos de 8 bit’s. megaAVR tinyAVR USB AVR
La siguiente lista son los microcontroladores no soportados : • •
XMEGA AVR32 V I . C ONECTORES
La lista de conectores que se aprecia en la Tabla I corresponde a los que se aprecian en la Figura 2.
Figura 2. Conector ICSP10, vista de los pines.
Tabla I ICSP10, PINES pin 1 2 3 4 5 6 7 8 9 10
Abrev. MOSI V TAR CLKO GND TRST GND SCK GND MISO GND
´ Descripcion Serial Output Target VCC Clock Output Ground Target RESET Ground Serial Clock Ground Serial Input Ground
La lista de conectores que se aprecia en la Tabla II corresponde a los que se aprecian en la Figura 3.
Figura 3. Conector ICSP6, vista de los pines.
3
Tabla II ICSP6, PINES pin 1 2 3 4 5 6
Abrev. MISO V TAR SCK MOSI TRST GND
´ Descripcion Serial Input Target VCC Serial Clock Serial Output Target RESET Ground
Nota: El programador es alimentado desde el USB. ´ DE DRIVES VII. I NSTALACI ON El driver para la STK500v2 est´a disponible en la p´agina web del m´odulo, el nombre de dicho archivo es “AVR-STK500drivers.zip”, se solicita instalar el programador con este driver, y tener previamente instalado el AVRStudio que se encuentra en la p´agina web. Para poder instalar los drivers del programador es necesario tener: • • •
Tener una copia del archivo “AVR-STK500-drivers.zip”, y descomprimirla en un directorio temporal. Conectar el programador en un puerto USB. Seguir los pasos descritos a continuaci´on.
1) Una vez que se conecta el programador, este no ser a´ instalado autom´aticamente por el computador. 2) Se comienza abriendo el panel de control, y se debe entrar en el “administrador de dispositivos”, se desplegar´a una vnetana como la que se aprecia en la Figura 4, aparece un dispositivo que no se reconoce, en este caso en la pesta˜na “otros dispositivos”, el nombre del dispositivo debe ser “Olimex AVR-ISP500” (se debe mantener el programador conectado al computador en todo el proceso).
Figura 4. Panel de control.
4
3) Se debe dar click derecho sobre el dispositivo y seleccionar la opci ´on “actualizar software del controlador...”, (Figura 5).
Figura 5. Actualizar controlador.
4) Luego se selecciona la opci´on “buscar software de controlador en el equipo”, (Figura 6).
Figura 6. Buscar manualmente.
5) A continuaci´on se da click en “examinar” y se busca el directorio donde se descomprimi´o el archivo “AVR-STK500drivers.zip”, y luego se da un click en “siguiente”, (Figura 7).
5
Figura 7. Buscar directorio.
6) Al finalizar la instalaci´on del driver el dispositivo deber´ıa quedar como se aprecia en la Figura 8.
Figura 8. Instlaci´on completa.
´ de driver se realiz o´ en un computador con Windows 7 64bits. Nota: se debe tener en cuenta que esta instalaci on Advertencia: el n´umero asignado al puerto COM en windows para el programador AVR-ISP500 debe ser el COM4 o menor. De otra forma AVRStudio no ser a´ capaz de reconocer el programador.
6
´ VIII. C AMBIAR N UMERO DEL C OM A continuaci´on se dan los pasos a seguir para lograr cambiar el n´umero designado al puerto COM. 1) Es necesario ir a panel de control, y abrir el “administrador de dispositivos”. 2) Abrir la pesta˜na “puertos (COM y LPT)”, y hacer click derecho sobre “Olimex Virtual COM - AVR-ISP500 (COMxx)” que para este caso es COM20 (Figura 9), pero puede ser cualquier COM entre 1 y 255. Luego seleccionar “propiedades” (Figura 10).
Figura 9. Cambio de puerto, selecci´on de las propiedades.
Figura 10. Cambio de puerto, selecci´on de las propiedades.
3) A continuaci´on se debe ir a la pesta˜na “configuraci´on de puerto” y dar click en “opciones avanzadas”, (Figura 11).
7
Figura 11. Configuraci´on de puerto, opciones avanzadas.
4) Se desplegar´a la ventana de la Figura 12, y se debe cambiar el n´umero del COM de la pesta˜na “N´umero de puerto COM”, nada m´as se debe modificar y debe quedar con un valor igual o menor de 4, como se aprecia en la Figura 13.
Figura 12. Cambio de puerto COM.
Figura 13. Selecci´on del nuevo puerto COM.
5) Se da click en aceptar, si dice que el puerto est´a siendo usado, se deja al criterio del usuario continuar de todas formas o seleccionar otro puerto COM, pero si se sobre escribe uno que este siendo usado se debe tener en cuenta que el dispositivo que estaba conectado anteriormente a ese puerto COM dejar´a de funcionar. Con todo esto se lograr´a cambiar el puerto al que se seleccion´o en el paso anterior, quedando como se aprecia en la Figura 14.
8
Figura 14. Puerto COM cambiado.
´ I X . C OMO U SA R AVR-ISP500 CON AVRSTUDIO Una vez cambiado el n´umero del puerto es posible utilizar el software AVRStudio para cargar el programa en el micro, para corroborar que la comunicaci´on entre el computador y el programador es correcta y funciona es necesario: 1) Abrir el software AVRStudio. 2) Presionar el bot´on que se aprecia en la Figura 15.
Figura 15. AVRStudio, carga de c o´ digo.
9
3) Al presionar el bot´on anteriormente mencionado se desplegar´a la ventana de la Figura 16, en la cual se debe seleccionar el programador con el cual se cargar´a el c´odigo y adem´as el puerto al que est´a conectado (existe la opci´on de dejar esta u´ ltima opci´’on en Auto y se reconocer´a el puerto autom´aticamente). El programador a seleccionar es el AVRISP y el n´umero del COM es el con el que se dej´o el programador anteriormente.
Figura 16. Selecci´on de programador y de COM.
4) Si se logra la comunicaci´on se desplegar´a la ventana que aparece en la Figura 17, en donde se aprecian algunos datos del programador, como son el firmware, y en qu´e puerto se encuentra, adem´as que se detecta como si fuera una STK500 (una placa de desarrollo mas antigua, que tambi´en se encuentra en el laboratorio).
Figura 17. Selecci´on de programador y de COM.
5) No es necesario cambiar ni modificar nada de esta ventana ni de sus pesta˜n as, ya que solo se est´a comprobando la comunicaci´on entre el PC y el programador. Con esto ya es posible cerrar estas pesta˜nas u crear un nuevo proyecto en AVRStudio.
10
X. CREANDO UN N UEVO P ROYECTO EN AVRSTUDIO Para crear un nuevo proyecto en AVRStudio solo basta con presionar “Project” y luego “New Porject” Se desplegar´a una ventana como la que aparece en la Figura 18, donde se debe seleccionar el nombre de un proyecto, la ubicaci´on y el tipo de proyecto, se recomienda utilizar el AVR GCC, al tener todo seleccionado se da un click en el bot´on “Next”.
Figura 18. Nombre del proyecto y ubicaci´on.
En la ventana siguiente se solicita seleccionar la plataforma de debug y el dispositivo a programar, para este caso se utiliza el AVR Simulator, y el dispositivo es el ATmega168, (Figura 19).
Figura 19. Plataforma de debug y dispositivo.
Al tener todo seleccionado se de al bot´on de “Finish” y se desplegar´a una ventana como la que se aprecia en la Figura 20.
11
Figura 20. Nuevo proyecto creado.
Una vez que se ha creado el nuevo proyecto, en el directorio seleccionado se crear´a una carpeta con el nombre del proyecto y 3 archivos estar´an dentro, de los m´as importantes uno es el “.aps”, el cual abre todo el proyecto, y el otro es el “.c” que contiene el c´odigo main del proyecto, si se necesitan agregar bibliotecas al proyecto es posible que se copien dentro de esta carpeta (esta es una opci´on, pero no es la u ´ nica). Ya con todo esto listo se escribe el c´odigo a cargar en el microcontrolador. ´ M ICROCONTROLADOR P ROGRAMADOR X I . C ONEXI ON Para realizar la conexi´on es necesario utilizar uno de los dos conectores que tienen el programador (ICSP10 y ICSP6), para este caso se utiliz´o el conector ICSP6, la distribuci´on de sus pines en forma f´ısica es algo complicada, para que esto se entienda mejor es necesario tomar la Figura 4 (para este caso), y decir que esta imagen es la que corresponde a los conectores macho que salen desde el programador, se debe tener en cuenta que el cable que se conecta al programador es hembra/hembra, ya con esto claro es necesario hacer el experimento pr´actico y medir continuidad entre una punta de este cable y la otra, as´ı ser´a determinada la posici´on de cada pin, una vez realizado esto anotar qu´e pin corresponde a cu´al, ya que esto servir´a mucho a la hora de conectar el programador con el microcontrolador.
Figura 21. Distribuci´on de los pines del ICSP6.
12
Los nombres de cada pin del conector ICSP6 se pueden apreciar en la Tabla I. Los nombres de los pines del microcontrolador se encuentran en su datasheet, para este caso se utiliz´o el microcontrolador ATmega168, la distribuci´on y nombre de sus pines se pueden apreciar en la Figura 22. Para el caso de la Figura 21 la distribuci´on de los pines seg´un los cables de colores conectados es la siguiente: • • • • • •
Cable Rojo - VTG Cable Azul - MOSI Cable Verde - GND Cable Blanco - MISO Cable Naranjo - SCK Cable Amarillo - RES
Figura 22. ATmega168 distribuci´on de pines.
La conexi´on a realizar es simple, solo se deben hacer coincidir los nombres de los pines entre el programador y el microcontrolador, y las tierras se deben conectar entre si junto con los VCC (en este caso AVCC Y VCC se conectan, si no se realiza esto el microcontrolador no se programar´a), la conexi´on se puede apreciar en la Figura 23. Ya con esto se logra la conexi´on entre el programador y el microcontrolador.
Figura 23. Conexi´on entre programador y microcontrolador.
13
´ XII. C ARGAR C ODIGO AL M ICROCONTROLADOR Una vez conectado el microcontrolador al computador se procede a cargar el c´odigo en el mismo, para ello es necesario terminar de escribir el c´odigo y compilar el mismo, una vez que se tiene el c´odigo sin errores en la carpeta donde est´a el proyecto se crear´a una subcarpeta llamada “default” en la cual se crear´an varios archivos con el mismo nombre pero distintas extensiones, solo si se ha realizado la compilaci´on correcta se crear´a el archivo necesario para cargarlo en el microcontrolador, este archivo tiene el mismo nombre que el proyecto pero su extenci´on es “.hex”, este archivo tambi´en es usado para ser cargado en las simulaciones de ISI Proteus. Con todo esto claro se procede a cargar el c´odigo, para ello es necesario: 1) En la ventana de AVRStudio se debe presionar el bot´on que aparece se˜nalado en la Figura 24.
Figura 24. Selecci´on del programador.
2) Como ya se explic´o anteriormente, se debe seleccionar el programador y el COM, para este caso es el programador AVR-ISP y el COM es el 4, a veces pasa que esto no lo solicita al encontrar ya un programador, y se salta esta etapa, por lo que pasa directamente a lo que se aprecia en la Figura 25.
Figura 25. Verificaci´on de estado del microcontrolador.
3) En esta ventana se tienen que verificar 2 cosas, la primera es que la frecuencia que aparece en la pesta˜na “main” debe ser un cuarto de la frecuencia usada en la tarjeta, si es superior entonces no ser´a posible programar el microcontrolador, si est´a
14
correcta se podr´a seguir sin problemas, para este caso se utiliz´o una frecuencia de 57,6[kHz], siendo usada una frecuencia de CPU de 8[MHz], lo que es muy por debajo de un cuarto de la frecuencia usada, pero para el caso del ATmega168 esta frecuencia est´a bien. Si se desea cambiar la frecuencia se debe presionar el bot´on “settings” que aparece en la Figura 26, una vez presionado aparecer´a una ventana como la de la Figura 27, de donde se puede leer la frecuencia actual y escribir una frecuencia nueva, se debe tener en cuenta que AVRStudio es el que determina las opciones de frecuencia, una vez seleccionada la frecuencia deseada se presiona “write”.
Figura 26. Cambio de frecuencia del modo ISP.
Figura 27. Cambio de frecuencia del modo ISP.
4) Lo que adem´as es necesario revisar antes de programar, son los fuses, una vez se presione la pesta˜na de fuses pueden pasar dos cosas: •
•
La primera opci´on es que no ocurra alg´un evento (ya que se setear´an algunas opciones autom´aticamente), en este caso ya es posible programar el microcontrolador. La segunda opci´on es que aparezca una ventana emergente de alerta, para este caso es necesario revisar bien la frecuencia seteada, ver si est´a bien conectado el programador con el microcontrolador, si los cables tienen continuidad entre sus puntas y si le lleva voltaje al micro. Una vez chequeado esto se debe volver a ver si los fuses se setean o no. Si ya se soluciona el problema entonces se puede programar el microcontrolador (en caso de que no se pueda se debe verificar bien).
5) Si es el caso que los fuses son correctos se deber´ıa ver una ventana seteada como la de la Figura 28, se debe tener en cuenta que para cada configuraci´on este seteo es diferente, igual que para cada microcontrolador.
15
Figura 28. Revisi´on de los fuses.
6) Con todo esto correcto se procede a seleccionar el “.hex” del directorio donde est´a el proyecto, para esto se debe ir a la pesta˜na “program” y presionar el bot´on que aparece destacado en la Figura 29, se busca el archivo en la carpeta “default” dentro de la carpeta del proyecto y se selecciona y se da a “aceptar”, ya con eso se da un click al bot´on “program”, como se aprecia en la Figura 30.
Figura 29. B´usqueda del “.hex”.
16
Figura 30. Cargando c´odigo a un microcontrolador.
7) Ya en esta etapa deber´ıa aparecer debajo de la ventana un mensaje de que est´a todo “OK”, si no es de esta forma, seguramente falt´o revisar bien un paso anterior, la frecuencia puede estar mal y esto acarrea que los fuses no se setean.
Figura 31. C´odigo cargado con e´ xito.
Nota: se debe tener en cuenta que al cargar un c o´ digo al microcontrolador ´este debe estar solo conectado al programador, ´ debe estar conectado a ning´un pin del microcontrolador. nada mas ´ XIII. C ONEXI ONES DEL C IRCUITO Es necesario verificar el funcionamiento de lo programado, que para este caso fue un “Hola Mundo”, que consiste simplemente en encender y apagar un diodo LED en un intervalo de tiempo. Para esto es necesario realizar una conexi´on simple, desde el pin seleccionado como salida digital del microcontrolador. Desde la salida seleccionada se conecta una resistencia de 330[ Ω] y en serie a esta resistencia se conecta un diodo LED, esto se puede apreciar de forma f´ısica como se ve en la Figura 32.
17
Figura 32. Conexi´o n el´ectrica.
Se debe tener en concideraci´on que con el programador no se puede alimentar el circuito, por lo que es necesario conectar el microcontrolador junto con todo el circuito a una fuente de voltaje de 5[V] DC. Ya con esto probado y funcionando se tiene un microcontrolador AVR programado con el AVR-ISP500.