AVR: domande da newbie

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

formatting link

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.

Reply to
torn
Loading thread data ...

no in genere i protocolli ISP sono seriali nel senso che usano un solo pin per trasferire i dati un bit alla volta

i protocolli paralleli invece usano piu' bit dati ( tip. 8 ) per trasferire i dati di programmazione sul dispositivo

nota: i protocolli ISP sono variabili da produttore a produttore, atmel adotta un simil SPI , Microchip una versione con singoli pin dati ( bidirezionale ) Maxim usa una seriale asincrona ( idem philips e Atmel per certi suoi micro )

altra nota: ISP permette la programmazione "in circuit" proprio perche' usa pochi pin ma nulla ti vieta di avere un programmatore stand-alone che usi il protocolli ISP

vedi sopra il protocollo parallelo non ha nulla a che fare con la porta parallela del PC, esistono programmatori paralleli ( che usano il protocollo parallello ) su scheda dedicata, su seriale ( del PC ) su USB

alcuni micro possono essere sbloccati da malfunzionamento SOLO usando un programmatore parallelo

diciamo la flash al posto di eeprom e stiamo a posto

le prime prove o anche tutti i lavori della tua vita li puoi' fare sulla millefori a saldare invece che sulle breadboard ( solderless ) ottenendo risultati anche discreti

non guardare i microcontroller come logiche programmabili, sono in tutto e per tutto dei piccoli calcolatori con vantaggi ( programmabilita' elevata diponibilita' di interfacce verso il resto del mondo anche molto complesse ) e svantaggi ( relativa lentezza rispetto alle logiche cablate o programmabili che siano )

devi nell'ordine:

1) scaricarti il simulatore ed il compilatore C ( sito Atmel e rete in generale ) 2) scaricarti leggere e capire il datasheet del chip prescelto 3) provare, provare, provare col simulatore i passi 1 e 2 vanno fatti 'insieme'

4) ti scarichi le application note presenti sempre sul sito atmel o trovi altri riferimenti in giro di programmi piu' o meno pronti per le tue necessita'

si e poi con un max232 lo colleghi tramite la seriale al PC .... e lo programmi per poterlo comandare in remoto poi, programmandolo opportunamente, lo usi come convertitore analogico digitale

Reply to
mmm

Il giorno Fri, 07 Mar 2008 02:47:36 +0100, torn ha scritto:

Bene, gli AVR tra gli 8 bit sono i mihliori, imho ovviamente.

Oppure anche il Ponyprog, che trovi qui:

formatting link

E' spiegato abbastanza bene sui datasheet dei µC.

Qui si può costruire un programmer USB (funziona e non è eccessivamente complicato)

formatting link

Si, la EEPROM e anche la Flash

Dipende da che cosa devi fare e da quanto vuoi spendere, in genere per cominciare una STK500 può essere sufficiente

formatting link

Si, potrebbe funzionare, ma dopotutto non è difficile.

Su

formatting link
trovi molte informazioni.

Si tratta di Flash, le EEPROM sono una cosa leggermente diversa, e sono presenti anche loro sui chip degli AVR.

Che se non va ti rimbocchi le maniche e cerchi di farlo andare ;-)

Comunque tieni presente che la cosa che crea più casino con gli AVR è la programmazione dei fuses, che se fatta in maniera impropria può addirittura bloccare il micro e richiedere l'uso di un programmatore parallelo per riattivare le funzioni.

Leggiti sempre bene la documentazione prima di fare dei passi.

-- ciao Stefano

Reply to
SB

Rispondo a te, ma ringrazio anche mmm per le precise e utilissime informazioni!

SB schrieb:

lo

,

SI,

o

Credevo bastasse una memoria non volatile all'interno di un uC. Il programma viene dunque scritto nella flash. Forse la eeprom serve per definire alcune caratteristiche "di base" del chip, come per esempio i fuses? Ho per=F2 letto che via ISP questi non si possono modificare...

tem&item_id=3D115

Dev'essere molto comoda, ma si tratta gi=E0 di una spesa non trascurabile... Ho visto che l'stk500 si pu=F2 attaccare direttamente ad una porta seriale del computer, deve quindi includere un programmatore seriale, giusto? Nulla per=F2 mi impedisce di prendere i pin dell'interfaccia ISP e di collegarli ad un altro programmatore, almeno in teoria :)

Ciao e grazie ancora! p.

Reply to
torn

eeprom e flash , pur essendo due memorie non volatili hanno caratteristiche differenti e differenti prestazioni, almeno all'interno dei microcontroller ( non pensare alle flash presenti nelle memorie a stato solido )

la eeprom ha durata piu' lunga ( numero max di scritture ), puo' essere scritta una byte alla volta, costa di piu' la flash dura di meno , spesso e' scrivivile a settori, costa di meno

per cui la prima la trovi in piccole quantita' per memorizzare dati , la seconda con dimensioni maggiori per il programma

poi come al solito ci sono un sacco di eccezioni :-)

Reply to
mmm

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.