Está en la página 1de 13

Lectura2.

Cargandocdigosy herramientasdecompilacin

Cmopuedescargarunprogramaentumicrocontrolador?
Cuando estos tutoriales fueron escritos y fotografiados, usamos el ATMega8, pero actualmente traemos el ms moderno ATMega168. Pido perdn por la confusin. Encontrars informacin referente alATMega168peroenlasimgenesverselATMega8. Se asume que tienes una fuente de alimentacin de 5V funcionando correctamente. Luego es necesariointroducirelATMega168enlaprotoboardyconectarlaalimentacinconsutierrarespectiva.

ATMega8(trabajaidnticamentealATMega168)insertadoenlalneamediadelprotoboard

Necesitars doblar levemente las patas del DIP (Dual Inline Package: empaquetamiento de doble hilera) para hacer que el ATMega168 encaje correctamente. Se cuidadoso, no dobles demasiado los pines hacia adentro. Los pines deberan encajar en las hileras ms centrales de una seccin del

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile Fono: + 56 2 3339579 Fax: +56 2 3350589

2|L e c t u r a 2 protoboard. Prefiero insertar una de las hileras primero y luego empujar el micro para doblarlas todas juntashastaquepuedaentrarlahileraopuesta.Sequeesenredado. Nota: el riel de 5V es la lnea horizontal de hoyos al lado de la lnea roja. Debes tener un cable conectando tu circuito regulador de 5V a uno de los hoyos de este riel. Es el mismo caso para la lnea azul. Todos los hoyos adyacentes a la lnea azul estn interconectados. Uno de estos hoyos debe ser conectadoalatierradelreguladordevoltajeyalatierradelafuentedealimentacin.Puedesconectar el pin VCC del ATMega168 a cualquiera de los orificios del riel de 5V, adems de conectar el pin GND a unodelosorificiosquehayatravsdelalneaazul. Hey! Si nadie te lo ha dicho, hay una manera realmente simple de encontrar el pin 1 en cualquier integrado.Elfabricantedecualquierelementopolarizado(condensadordetantaliooelectroltico,LEDs, ICs, etc.) siempre colocar algn tipo de marca sobre l para indicar como el dispositivo debera estar orientado. Para los micros, hay una pequea muesca en uno de los extremos del integrado. La flecha azul en la imagen apunta a esa incisin. La flecha naranja apunta hacia el pin 1 y las etiquetas azules muestrancomoseincrementanlosnmerosdepines.

RotulacindelosPinesenunIC

El pin 1 est a la izquierda desde la muesca y el nmero de pin se incrementa hacia abajo de este pin por la izquierda del integrado. Los nmeros de pines saltan hacia la derecha en el final de esa hilera paracomenzaraincrementarsehaciaarriba.VerlaimagendeldatasheetdelATMega168msabajo. Debes conectar el ATMega168 en tu protoboard con la siguiente configuracin: el pin 7 (VCC) y el pin 20 (AVCC) deben estar conectados a tu riel de 5V y los pines 8 y 22 (GND) deben estar conectados a la tierra del protoboard. Cuando alimentes el circuito tu ATMega168 funcionar pero no tendr ningn programaquecorrer!. En verdad lo anterior no es enteramente cierto, hay una conexin ms que necesitas hacer antes de que el ATMega168 pueda correr un cdigo. El pin de RESET en el ATMega168 necesita estar conectado a VCC. Puedes conectar el pin RESET directamente a 5V o puedes elevarlo conectando el
Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile Fono: + 56 2 3339579 Fax: +56 2 3350589

3|L e c t u r a 2 pin de RESET a VCC a travs de una resistencia. Esto te permitir agregar un botn de reset momentneo. Qu es esto? La lnea de RESET en el ATMega168 reinicia el micro exactamente como lo hace el botn de reset de tu PC. Si estudias el datasheet del ATMega168 vers que la etiqueta de RESET estescritaconunalneaabajo.EstanomenclaturaindicaqueelpindeRESETseactivaconunasealen 0V. Qu es activamente bajo? El pin de RESET es una entrada digital binaria. El nivel bajo en este pin pone el micro en reset, por ejemplo, el pin es activado con una entrada baja (active low). As que al menos que quieras dejar tu ATMega168 permanentemente en RESET necesitars elevar este pin al estadoalto(aVCC). Ahoranecesitasunbotndereset.Uninterruptormomentneoestaactivado(ocerrado)cuando lotocasyseabrecuandolosueltas.Amenudoselesllamainterruptoresdetacto,porquecuandohacen cliccuandolesquitaspresinyluegoledanunasensacindetactoalapersona.

As se ve el esquema. Note que los pines 1 y 2 estn conectados juntos, 3 y 4 estn conectados juntosycuandopresionaselbotntemporalmenteconectalospines1,2y3,4almismotiempo.

Notequelosbotonestienen5patas,situbotntiene5patas,soloignoraladelmedio, noestaconectadaanadaypuedesercortada. Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile Fono: + 56 2 3339579 Fax: +56 2 3350589

4|L e c t u r a 2 Paraprobarestebotn,ocupatumultmetroyponloenmedicindecontinuidad.Estaeslamejor configuracin para los multmetros de mediana calidad, crucial para las pruebas y experimentacin. Al juntar las puntas deberas escuchar un tono indicando que existe continuidad o un camino con resistenciacasiceroentrelaspuntas.Insertaelbotnentuprotoboardypruebalos2pinesqueestna un lado del botn. Si escoges los pines 12 o 34 deberas escuchar un tono. Estos pines estn permanentemente conectados en su interior. Si conectas los pines 13 o 24 no escucharas nada. Ahora presiona el botn. Tocando el botn conectars electrnicamente esos 4 pines y escuchars un tono, estosignificaquehaycontinuidadelctrica.

Elesquemamuestralospines1y2delinterruptorconectadosatierraylospines34conectadosa RESET.Enlaprctica,slonecesitasqueelinterruptorfuncione.Juegacontumultmetroy encuentra2pinesquenoharnruidocuandoelbotnnoestocado,yquehacenruidocuandoel botnessoltado.Usaestos2pines.

El esquema de arriba es lo que buscamos. La resistencia de 10k levanta el botn de reset duranteunfuncionamientonormal.Levantandoelreset,elATMega168funcionanormalmente.Cuando presionaselbotnreset(S2),elpinderesetveunaconexincontinuaatierra.Dadoquelaresistenciaa travs del interruptor soltado es casi cero, gana (comparado con la resistencia de 10k) y el pin de reset esempujadohaciaabajo,RESETseactivayelATMega168entraenestadodereset.Sueltaelbotnpara queelpinderesetestelevantadodenuevoyelATMega168salgadereset.Ingenioso!
Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile Fono: + 56 2 3339579 Fax: +56 2 3350589

5|L e c t u r a 2

PinesdelATMega168

Ves la muesca en el datasheet del ATMega168?. Viendo la parte de arriba del IC (patas abajo), con la muesca en su parte superior, los nmeros van aumentando partiendo desde el 1 en la esquina superior izquierda. As es como cada pin IC es numerado. De todas formas, las marcas de orientacin varan un poco entre los fabricantes y lo tipos de paquetes. Busca una marca no congruente como un agujero, un pequeo punto, una flecha blanca, una esquina recortada, etc. Cualquier cosa que haga diferente el rea del chip de las dems probablemente indique el pin 1. Cuando tengas una duda consultaeldatasheet.

CableadopararesetconectadoaunAtmega8(lomismoaplicaparaunATMega168) Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile Fono: + 56 2 3339579 Fax: +56 2 3350589

6|L e c t u r a 2 Aprende como usar la configuracin para chequeo de continuidad en tu multmetro. Ser vital paraladeteccindeerroresentucamino. Cada fabricante de microcontroladores tiene un mtodo diferente para escribir cdigo en la memoria flash del micro. En los ltimos aos se ha enfocado con nfasis el ISP (del ingls in System programming, programacin en sistema). ISP te permite programar el IC sin tener que desconectar el microcontrolador de la aplicacin. No es trivial!. La historia fue mucho ms dolorosa. Atmel ha diseado un mtodo relativamente simple que requiere el control de algunos pocos pines (6 en total). Debido a esta simple interfaz, el programador de hardware que se requiere para conectar tu computadoraestainterfazSPIesbastantesimpleybaratotambin.

Lamarcarojaindicalaposicindelpin1

Recuerdas cmo identificamos el pin 1 del IC usando la muesca? Bueno, los conectores tambin necesitan polarizacin, as que no freiremos elementos revertiendo las orientaciones de los conectores. Desafortunadamente los conectores estn numerados de manera inversa a los ICs. En la imagen del conector ISP, se ve la lnea roja indicando el pin 1. Un IC cuenta secuencial mente en descenso en un lado. Los conectores por otro lado incrementan el nmero de los pin de adelante hacia atrs mientras cuentashaciaabajoporlosconectores.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile Fono: + 56 2 3339579 Fax: +56 2 3350589

7|L e c t u r a 2 Lacadenadeprogramacinlucedeestamanera: 1. HayuncompiladorgratisenCllamadoAVRGCC.LosusuariosescribencdigosenCycompilanel cdigoenarchivosHEX. 2. AVRGCC puede ser instalado en plataforma Windows con un programa de instalacin WinAVR fcildeusar. 3. ElusuariodebeponerestecdigoHEXenlaAVRvalospinesISP. 4. El puerto paralelo y el puerto serial han sido diseados para conectar el computador a los pines AVRISP.Osea,necesitaunprogramadorquepuedaserserialoparalelo. 5. El computador corre un programa desde la lnea de comandos para transferir el archivo HEX desdeelcomputadoralpuertoserialoparalelo,ysaliralospinesAVRISP. 6. Elmicrocorreelcdigodelamquina(archivos*.HEX)unavesqueesprendidooreseteado. Qu es un compilador C? Es un programa al cual se le ingresa un cdigo escrito en lenguaje C y entrega un archivo .HEX. Preferimos programar en C porque es ms fcil para nosotros de ensamblar y msflexiblequeBasic. Qu es un archivo HEX? Es un archivo que contiene varios caracteres hexadecimales. Estos cdigos (hex codes) representan instrucciones de mquina que el ATMega168 entiende. Este archivo es loqueesenviadoalprogramadorquiencargaestasinstruccionesdemquinaalATMega168porelISP. Antes de que nos volvamos locos, descarga e instala WinAVR en el computador en que estars haciendo tu desarrollo. Si el link anterior falla, una bsqueda en Google te llevar directamente a l. El instalador de Windows debe ser fcil de ocupar, instlalo con las opciones predeterminadas. WinAVR contiene una versin del compilador GCC y varias otras herramientas incluyendo avrdude y Programmers Notepad. Avrdude es un simple programa de lnea de comandos que toma un archivo HEXylomandaalpuertoserialoparaleloparaprogramarloenelmicrocontroladorAtmel. Regresando hacia atrs en este tutorial, los proveer con el archivo del ejemplo Hola mundo que probar que todo est funcionando de manera correcta en tu micro. Con cualquier proyecto de microcontrolador, el primer truco es siempre hacer que un LED parpadee. Este es el hola mundo de lossistemasintegrados.Adivinaqueesblink_1mhz.hex. Con el archivo HEX de parpadeo en tus manos, necesitas ponerlo en el micro. Necesitars conectar el programador AVRPG1 (o el AVRPG2) al ATMega168. La manera ms fcil de hacer esto es con9cablesconectadosdesdetuprotoboardalconectorISPde10pinesdelaAVRPG1/PG2.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile Fono: + 56 2 3339579 Fax: +56 2 3350589

8|L e c t u r a 2

IntroducircablesalafuerzaenelconectorISPnoesunasolucindelargoplazo,peroporelfinde hacer parpadear el LED rpidamente, lo he hecho. He tenido que cortar cablecitos y pelarlos en sus puntas. Una de las puntas peladas se insertan en el conector negro del programador, la otra punta se insertaenelprotoboarddondecorresponda.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile Fono: + 56 2 3339579 Fax: +56 2 3350589

9|L e c t u r a 2

ElprogramadorparaleloAVRPG2cableadohaciaelATMega168.Heagregadotambindoscondensadores de0.1uF.EstepardecondensadoresestncolocadosentreVCCyGNDdelmicroparadisminuirelruidoenel integradoPuedespensarquetienes5Vcontinuos,peronoesasrealmente.S,elATMega168funcionar probablementesinestoscondensadoresperoesbuenaideatenerlosinstalados.

Nota AVR ISP: tienes que tener conectados los 4 pines GND. No te sirve conectar slo uno de estos pinesGNDenelconectorISP. Adicionalmente, necesitamos tener un LED de control. Este puede conectar a cualquier pin GPIO (delinglesGeneralPurposeInOut,entradaosalidadepropsitogeneral).PC0esunbuenlugar.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile Fono: + 56 2 3339579 Fax: +56 2 3350589

10|L e c t u r a 2

Elordenresistor/LEDnoimportaslorecuerda (tutorial1)debestenerelresistor!.ELpinGPIO no nos importa realmente, blink_1mhz.hex cambiar todos los pines en todos los puertos para que puedas conectar la resistencia a cualquier pin. Mientras vayas agregando ms hardware perifrico, querrs dedicar algunos pines para algn uso alternativo (como los pines TX y el RX para comunicacin serial). Teestsacercando!Yaeshoradeprogramarelchip!. Una vez instalado WinAvr, deberan aparecer algunos iconos en tu escritorio, Progammers Notepadesunbueneditoryrotuladordecdigos. Qu es un editor y rotulador de cdigos? Al programar necesitars un editor de texto en tu computadorparaquepuedasescribiruncdigo.Unavezquetengasescritoelcdigoentucomputador (dentro del editor) pasaras el cdigo alcompilador (hars clic a un botn que corre el compilador con el archivo C que tipeaste) y el computador crear un archivo HEX (asumiendo que no hay problemas o malos tipeos en tu cdigo). El rotulador? Cuando ests creando un cdigo, es agradable tener varias partes del cdigo de tu programa en colores, as podrs diferenciar de cosas comunes como for() y #define.Elrotuladorayudahartocuandoestasprogramando.
Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile Fono: + 56 2 3339579 Fax: +56 2 3350589

11|L e c t u r a 2 Usa cualquier herramienta de texto que quieras. Notepad funcionar, pero es bastante rudimentaria.Tambinmegusta JFEde misdasdePIC.Ambostienenherramientasopcionalesqueson buenas, pero JFE es mejor opcin en mi opinin, ya que enlista las funciones de C para que les puedas hacer doble clic y navegar entre ellas. Si hay una forma de hacer un truco similar en el Programmers Notepad 2, hganlo saber!, porque el Programmers Notepad v2 (alias PN2) viene con la instalacin de WinAVR.Lousaremos!. AVRGCC es extremadamente poderoso, muy complejo y difcil de usar inicialmente. Yo acostumbro pasar el *.c a un compilador de PIC (CC5x) y obtener el HEX como salida sin ensuciarse ni enredarse. Creme, el dolor de hacer correr AVRGCC, lo vale. AVRGCC es realmente un buen compilador,yesgratis!.Incluyounmakefileyunblink_1mhz.cenblink_1mhz.zipparaempezar.Nosoy por ningn motivo un tipo de persona LINUX. Todo lo que tienes que saber, es que cuando escribas make en el la lnea de comando, el compilador buscar un archivo llamado makefile (sin extensin) y usaesearchivoparadirigirlacompilacindetuarchivoC.

Estos son los nicos archivos que necesitars para hacer que el programa blink compile. Abre el blink_1mhz.c en el programmer`s notepad y haz clic en herramientas make all. Es lo mismo que escribir make all en la lnea de comando desde cualquier directorio en que hayas guardado estos 2 archivos. Porejemplo:
C:\Code\Blink>make all

El cdigo debera compilarse bien. Es un poco mas fcil hacer esto a travs de la interfaz del programmers notepad en vez de ir cambiando hacia atrs y desde la ventana de la lnea de comandos. UnavezdequehayascompiladosatisfactoriamenteelarchivoCenunHEX,necesitarsllevarelarchivo HEX al AVR. Es tiempo de prender tu sistema!. Los programadores de AVR baratos requieren que el destinatario (tu protoboard) provea de poder al programador (esto es el AVRPG1 o PG2). Dale poder a tu protoboard, deberas ver el LED de poder prenderse. Desde ac en adelante asumiremos que estas usandoelpuertoparalelo,oseausasunAVRPG2. Hay slo 2 puntos en el makefile de los cuales te debes preocupar esta vez. Estos 2 puntos estn ubicados debajo de las opciones de la seccin de programacin. Este makefile es enorme, pero no te preocupes, slo baja hasta la parte dela seccin de las opcionesde programacin (avrdude). Ahora pon tu#enfrentedeloquetuquierascomentar.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile Fono: + 56 2 3339579 Fax: +56 2 3350589

12|L e c t u r a 2 SiestasocupandoelAVRPG1(programadordepuertoserial)editasas:
#AVRDUDE_PROGRAMMER = stk200 AVRDUDE_PROGRAMMER = ponyser # com1 = serial port. Use lpt1 to connect to parallel port. #AVRDUDE_PORT = lpt1 AVRDUDE_PORT = COM1

SiestasusandoelAVRPG2(puertoparalelodeprogramacin)editasas:
AVRDUDE_PROGRAMMER = stk200 #AVRDUDE_PROGRAMMER = ponyser # com1 = serial port. Use lpt1 to connect to parallel port. AVRDUDE_PORT = lpt1 #AVRDUDE_PORT = COM1

Por supuesto los nmeros de los puertos dependen especficamente de tu computador, pero una vez que hagas funcionar las cosas, lo tendrs configurado de por vida. Asumiendo que editaste y guardaste tu makefile, volvamos a PN2. Con tu protoboard alimentado, presiona tools program. Esto enviar el comando make program al command prompt. Si todo esta configurado correctamente, debers haber cargado correctamente blink_1mhz.hex en tu ATMega168 y tu LED debera estar parpadeando. Sirecibeselerror:
cant open device "giveio"

Bsicamentenecesitascopiarelarchivogiveio.sysdesdeC:\WinAVR\binaldirectorioC:\Windows, yluegotipearinstall_giveio.batenlalneadecomandos.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile Fono: + 56 2 3339579 Fax: +56 2 3350589

13|L e c t u r a 2

Problemastpicos
Si todava no eres capaz de programar el AVR, le pasa al 99% de los usuarios novatos, investiga y resuelvetusproblemas. LasconexionesISPestncorrectas?Esfcilconectarloalrevs.Velasfotosdearriba. Hay algn cable suelto? Saca el multmetro y revisa si estas entregando los 5V a los pines VCC y GNDenlaATMega168.LoscablesvanalconectorISPytienenunaconexinslida? TieneselconectorATMega168conectadoalpoderytierra? Esttufuenteentregando5V? Tienesseleccionadoelpuertoserialoparalelocorrectoenelmakefile? TieneselpuertoCOMoLPTelegidocorrectamenteentumakefile? Hay una cantidad de cosas que revisar. Es difcil. Pero una vez que lo configures bien, y el LED parpadee.Serfantstico!. OK, voy a asumir que introdujiste el cdigo correctamente en el AVR y el LED esta parpadeando. Felicitaciones!. Ahora ests en camino a un mundo de lleno de sufrimiento!. Una vez que haces funcionar una cosa. Es difcil de parar! GPS, datalogging, RF, diseos PCB, estn a la vuelta de la esquina. Paraarmarelcircuitodeestalecturanecesitarslosmismoselementosdelalectura1,ademsde un LED, un par de resistencias, un par de condensadores, un microntrolador ATMega168, un Pulsador y un programador de AVRs que puede ser uno serial, el AVRPG1, o uno paralelo, el AVRPG2. Estos ltimoselementosdesdeelmicropuedesadquirirlosennuestratiendawww.olimex.cl.
Estas lecturas son una traduccin al espaol del tutorial Beginning Embedded Electronics Tutorials desarrollado por SparkFun Electronics. Traducido para Ingeniera MCI por Julin Aguayo. Revisado y corregido por IvnSarmientoyPaulAguayo. Estamosabiertosacomentarios!Reportatustips,comentariosorecomendacionesainfo@olimex.cl.

Ingeniera MCI Ltda. Luis Thayer Ojeda 0115 of 402, Providencia, Santiago, Chile Fono: + 56 2 3339579 Fax: +56 2 3350589

También podría gustarte