Voglio imparare a controllare microcontrollori e ho scelto gli AVR. E` la prima volta che mi avvicino all'argomento, quindi vi riassumo quello che ho appreso pregandovi di correggermi dove sbaglio. Far=F2 anche qualche banale domanda :)
Ci sono due modi di programmare gli avr: in modalit=E0 parallela e in modalir=E0 seriale (ISP). Per la modalit=E0 parallela si pu=F2 comprare/costruire un programmatore come il "Parallel Programmer" di
presentato tra l'altro in diverse versioni. Analogamente, per programmare in modalit=E0 ISP c'=E8 bisogno di un circuitino che prenda l'output del computer (da seriale, parallela, usb), lo modifichi in modo che rispetti le specifiche dell'ISP e lo dia in pasto al microcontrollore. Esistono programmatori ISP per porta parallela costituiti solo da elettronica passiva, deduco quindi che fondamentalmente l'ISP sia un protocollo parallelo.
I vantaggi dell'ISP consistono nel fatto che =E8 possibile programmare il=
uC nella scheda dove poi dovr=E0 lavorare, ammesso ovviamente di aver predisposto una porta (3*2 pin) attraverso cui programmarlo. Via ISP =E8 inoltre possibile usare interfacce diverse dalla parallela per programmare. La modalit=E0 ISP sembra nettamente pi=F9 diffusa della parallela "nativa".
Ammettiamo che io voglia programmare il mio primo AVR. Scelgo di volerlo fare via ISP. Mi serve quindi: un programmatore ISP, diciamo parallelo, e un uC. Metter=F2 poi il uC in una breadbord e collegher=F2 4 pin (MOSI,=
MISO, SCK, RESET) all'uscita del mio programmatore ISP. Dovrei a questo punto essere pronto a programmare la eeprom contenuta nel uC.
Sul mercato si trovano sia i programmatori ISP sia le cosiddette "development boards". Queste non sono che schede con uno zoccolo adatto ad ospitare un uC, un'interfaccia ISP per la programmazione e un po' di elettronica per fare alcune operazioni di baste col uC, sostanzialmente pulsanti, microswitch e led. Si tratta in pratica di una versione specializzata di una breadboard. Potrebbe valere la pena acquistarne una, certamente pi=F9 che acquistare un programmatore (fanno eccezione i programmatori USB, meno semplici da autocostruire). [Ripeto: io faccio affermazioni secondo quanto ho letto e capito, ma mi aspetto di essere corretto da chi ha pi=F9 esperienza di me!]
Di uC AVR ne esistono tanti e possono includere diversi elementi, per esempio un ADC. Certo tutti i chip di base potranno funzionare come un circuito logico programmabili. Visto che per ora voglio capire come fare cose semplicissime mi riferir=F2 ad un AVR generico, rimandando lo studio=
dei vari modelli disponibili.
Riprendendo il filo del discorso: ho un programmatore con collegato un uC, non mi resta che usarli! Scriver=F2 un programma in C, da compilare con avr-gcc, che faccia qualcosa. Potrei iniziare con qualcosa tipo: se il pin N =E8 "true" (tensione rispetto a GND superiore a X volt), allora setta il pin di output M come "true" (posso usare la ddp tra il pin M e GND per accendere un led).
Non ho idea di come fare tutto questo; in realt=E0 non ho ancora cercato una guida per la programmazione in C degli AVR, ma in linea di massima l'idea dovrebbe essere questa. Immagino che esistano delle variabili riservate per indicare i vari pin e cose del genere... Accetto suggerimenti su dove/come studiare :)
Ammettiamo di aver compilato il programmino. Con un software apposito (tipo avrdude) programmo la eeprom. Sono pronto ad usare il uC: sempre nella breadboard lo circondo dei componenti di cui necessita (un quarzo per il clock, alimentazione e immagino poco d'altro, dovrebbe essere tutto indicato nel data sheet). Magia! Se do tensione al pin N il led collegato al pin M si accende!
Che ne dite?
Grazie per la pazienza :) p.