Programació d'un microcontrolador AVR pel port paral·lel

20080507 – www.electronics.cat


1- Cal que instal·leu els paquets necessaris per fer la compilació i la programació dels xips AVR. A la distribució d'Ubuntu ho podeu fer d'aquesta manera :

sudo aptitude install binutils-avr gcc-avr avr-libc avrdude uisp


2- Doneu drets d'accés al port paral·lel

sudo chmod 666 /dev/parport0


3- Cal que desenvolupeu un cable per fer la programació



L'esquema electrònic del cable per programar pel port paral·lel és :


Llistat de components :

J1 – Connector mascle tipus DB-25

R1 – Resistor de 220 ohms d'1/4 de watt

R2 – Resistor de 470 ohms d'1/4 de watt

R3 – Resistor de 220 ohms d'1/4 de watt

P1 – Connector de 5 potes (per exemple d'una tira de pins)

A més :

Cable UTP de categoria 5 d'uns 20 cm (és important que sigui prou curt)

Tub termorretràctil per protegir els resistors de possibles encreuaments



Pinteu amb un marcador de color blanc la pota de massa :



Al tutorial http://www.binefa.net/electronica/tutorial02/ hi ha la placa que farem servir per programar amb aquest cable.



El cable s'endolla al connector de la dreta de la foto. Orienteu el connector de tal manera que la pota pintada de blanc sigui la que queda connectada més aprop del led :



4- Per fer el programa ens caldrà un editor de codis font. L'editor suggerit en aquest exemple és el Geany. (Si no el teniu instal·lat, feu-ho : sudo aptitude install geany ). Hi ha d'altres que també funcionen la mar de bé (p.e. : gedit, anjuta, ...).


5- Descarregueu-vos un codi per fer una prova de funcionament. Per exemple : provaAVR04.c


6- Una manera de compilar i programar es fent servir les eines einesUSB88Bin.zip (els codis font : einesUSB88.zip). La manera de fer la compilació d'un arxiu .c (p.e. : provaAVR04.c -baixar amb wget per mantenir els accents i demés caràcters no anglosaxons-) és situar tots els binaris descomprimits d'einesUSB88Bin.zip a la mateixa carpeta dels arxius .c i escriure pel terminal :

./gcc88 provaAVR04.c

que generarà l'arxiu provaAVR04.hex

7- Ometre aquest pas si el xip que es vol programar no duu un cristall de quars. En la placa que estem fent servir ens interessa poder-nos comunicar mitjançant l'UART i ens cal una precisió que tan sols pot donar un cristall de quars com a rellotge. Per indicar al xip que volem fer ús d'aquesta característica s'han de programar uns fusibles interns. Per fer fàcil aquesta operació, es pot executar des del terminal :

./fuseXtal88

(en format binari a einesUSB88Bin.zip i el codi font a einesUSB88.zip)

Aquest pas és delicat degut a que si diem al xip que duu cristall de quars i en realitat no en duu, el xip no donarà símptomes de vida. Es pot recuperar un xip d'aquest estat introduint una freqüència d'1 Mhz a la pota XTAL1 (la 9 en aquest exemple).


8- Per enregistrar el codi hexadecimal es pot executar des del terminal :

./prg88 provaAVR04.hex

(en format binari a einesUSB88Bin.zip i el codi font a einesUSB88.zip)

9- En cas de no tenir instal·lat el gtkterm (Aplicacions->Accessoris->Serial port terminal), feu-ho

sudo aptitude install gtkterm


10- Executeu GtkTerm (Aplicacions->Accessoris->Serial port terminal). Premeu Control+S o aneu a Configuration->Port



Escolliu el port sèrie del vostre ordinador (Al tenir un portàtil sense port sèrie faig servir /dev/ttyUSB0, recordeu que /dev/ttyS0 és en altres sistemes operatius COM1, /dev/ttyS1 és COM2 i així successivament), una velocitat de 115200 bauds, amb 8 bits de dades, sense paritat i sense control de flux. Si feu servir un portàtil sense port sèrie (i teniu connectat el cable convertidor USB a RS232) és possible que no veieu desplegat al menú desplegable del port l'opció /dev/ttyUSB0, degut a que hi ha un conflicte amb el paquet brltty (terminal Braille per a cecs) i l'haureu d'eliminar :

sudo aptitude purge brltty


A l'Ubuntu 8.04 ens diu que també vol esborrar ubuntu-destop. Dir-li que no i a la segona proposta li diem que si (que no esborri ubuntu-desktop). Abans de connectar el cable RS232 a la placa podeu verificar el funcionament del GtkTerm observant que quan creueu les potes 2 i 3 del connector DB-9 les tecles premudes fan eco (es visualitzen) i si no les creueu no fan eco (no es visualitzen).


11- Connecteu la placa http://www.binefa.net/electronica/tutorial02/ a la placa http://www.binefa.net/electronica/tutorial03/ alimentada. Connecteu-hi el cable RS232. Si tot va bé, observeu com ara fa eco al trametre caràcters a 115200 bauds.


12- Feu una altra prova amb provaAVR03.c . Aquesta segona versió és el doble de lenta al fer el pampallugueig del led i retorna el següent caràcter (+1) de la taula ASCII de la tecla premuda al GtkTerm.



Enllaços relacionats :

http://tuxgraphics.org/electronics/200411/article352.shtml

http://www.nongnu.org/avr-libc/user-manual/group__demo__project.html