Nella prima parte abbiamo analizzato il circuito la teoria e gli strumenti software da scaricare per poter sviluppare con gli AT90USB, in questa seconda parte monteremo il circuito ed analizzeremo, dal punto di vista pratico passo dopo passo, tutti i passaggi per mettere in funzione il PIERIN e realizzare il primo programmino di prova. In questa occasione illustrerò anche una tecnica per montare gli integrati SMD che spero possa essere di aiuto a qualche lettore.
Indice |
Saldare gli SMD
Quasi tutti i microcontrollori (e non solo loro) vengono venduti in contenitore per montaggio superficiale e l' AT90USB non è da meno. Colgo quindi l' occasione per illustrare un modo per montare i circuti integrati che, a mio avviso, è estremamente valido. Non è farina del mio sacco ma è una sintesi di tutte le tecniche che ho potuto sperimentare, molte delle quali illustrate dagli utenti di ElectroYou quindi a loro va il merito. Io ho solo raccolto i vari sistemi, li ho sperimentati e ne ho individuato uno (che oramai utilizzo sempre) che è poco critico e non necessita di attrezzature particolari. Basta un saldatore, un po' di stagno, un barattolino di flussante liquido ed un pezzo di treccia dissaldante per ottenere saldature perfette. L' integrato che monterò ' in contenitore QFP da 64 pin con passo 0.8 mm ma con questa tecnica si possono benissimo montare anche i TQFP con passo 0,4 mm ottenedo sempre un risultato eccellente.
Il saldatore e lo stagno
Ho a disposizione tre saldatori a stagno immortalati nella foto qui sotto. Partendo da sinistra: un micro saldatore a punta sottilissima per lavori fini, un normale Weller WECP-20 ed un saldatore da 60W che uso per lavori non elettronici e per saldature che necessitano potenza.
Ho anche tre diversi tipi di stagno. Da sinistra verso destra vediamo uno flio di ottima qualità da 0,5mm. con un flussante interno che lo rende particolarmente fluido, un filo di buona qualità da 0,8mm. ed un filo da 1,5 mm. ... che uso per saldare particolari meccanici o cavi di grande sezione.
Per saldare l' integrato utilizzerò il saldatore di destra (quello per le pentole) e lo stagno più grosso. Non perché sono masochista ma per evidenziare il fatto che questa tecnica non necessita di particolari attenzioni se non quella di posizionare alla perfezione i pin del componente sulle piazzole.
Il montaggio
Per posizionare il componente ho lasciato cadere una gocciolina di colla tipo "attaccatutto" ma anche una goccia dal tubetto di "Bostik" o di "colla Artiglio" va benissimo. Ne basta pochissima. Dopo aver deposto una gocciolina di colla sul circuito stampato ho appoggiato il componente e l' ho posizionato usando uno stuzzicadenti e, una volta posizionato, ho lasciato asciugare la colla per una mezz' ora.
Poi ho acceso il saldatore ed ho fatto due saldature agli estremi dell' integrato senza curarmi dei ponticelli fra un pin e l' altro. Non c'e' bisogno di fare attenzione.
Dopo ho saldato i vari pin facendo attenzione a saldarli tutti e creando praticamente un cordone di stagno. Mi scuso se la foto è sfocata (ne ne sono accorto tardi) ma penso che comunque si possa vedere bene che obbrobrio di saldatura è venuta fuori. Tutti o quasi i pin in corto fra di loro.
Ed ora la lavorazione magica. Ho bagnato la treccia dissaldante nel flussante liquido e l' ho premuta contro le saldature. Il flussante facilita la fusione delle stagno che viene risucchiato per capillarità dalla treccia eliminando tutti i ponticelli fra i pin e lasciando i pin perfettamente saldati.
Man mano che la treccia si riempiva di stagno ne eliminavo un pezzo (circa 1cm.) tagliandola con le tronchesine e reimmergendola nel flussante. Ho consumato circa 4 cm. di treccia ed il risultato ottenuto dopo la pulizia è questo.
Una lavata con un po' di alcool denaturato, quello che si usa in casa, ed il risultato ottenuto è questo.
L' immagine parla da sola ed è mio dovere ringraziare ElectroYou ed i suoi utenti che, tramite proficuo scambio di informazioni ed esperienze, mi hanno permesso di arrivare ad avere un sistema di saldatura affidabile, veloce e per niente critico.
Montaggio del PIERIN
Poche parole per ricordare che, in qualsiasi circuito, prima si montano i componenti bassi come resistenze e diodi, poi i condensatori ed infine i componenti più alti come i connettori, i jumper ed in questo caso, per ultimo il connettore USB. Il quarzo però non l' ho montato direttamente sul circuito stampato ma ho brutalizzato uno zoccolo per circuiti integrati per ottenere due ricettacoli per i pin e poi li ho saldati. In questo modo posso mettere di volta in volta il quarzo che m' interessa utilizzare.
Nella foto si possono vedere le strip maschio-maschio che ho montato nei fori laterali. Ho montato strip di questo tipo perché utilizzerò questa base su prototipi su millefori realizzati con zoccoli wire-wrap e, in taluni casi, su breadboard. I fori sono comunque abbastanza larghi da accettare connettori come quelli montati su arduino con i pin a sezione quadrata, quelli tipo i jumper per intenderci. Si può anche notare, purtroppo, la presenza di una modifica. Più che modifica diciamo che mancava un collegamento sulla scheda. Errare è umano, io ho errato e non ho disegnato un collegamento. Un pezzettino di filo che collega R2 al pin 21 (Vcc) ed il problema è risolto.
Messa in funzione
Prerequisisti
Prima di collegare il Pierin all' USB è necessario installare il programma FLIP 3.4.3 che si può scaricare direttamente da QUI che contiene anche il driver USB per il bootolader. Una volta installato bisogna accertarsi che il jumper JP1 sia inserito in modo da alimentare tutta la baracca tramite il 5V dell' USB e quindi collegare la scheda all' USB.
Driver USB
E' venuto il momento di collegare la scheda ad una porta USB, il LED PWR si accende indicando la presenza di alimentazione. A questo punto bisogna:
- Premere il pulsante BOOT e tenerlo premuto
- Preme e rilasciare il pulsante RESET
Da PC esce il classico suono del collegamento USB e compare la finestra che richiede l' installazione del driver. Selezioniamo "NO, non ora" dalle opzioni "Consentire la connessione a Windows Update per la ricerca di software?" e premiamo "Avanti". Comparirà la schermata
Che indica AT90USB128 perché ho montato sulla scheda un AT90USB1287. Selezioniamo "Installa il software automaticamente" perché i drivers sono già presenti e sono stati installati insieme al programma FLIP, premiamo "Avanti" e quando il driver sarà correttamente installato comparirà la finestra
Premiamo quindi "Fine" per terminare l' installazione.
Programma FLIP
Ora possiamo verificare se il programma FLIP vede correttamente la nostra scheda. Useremo in futuro questo programma per caricare le nostre applicazioni nel micro senza bisogno di programmatori. Lanciamo FLIP e comparirà questa schermata
E' necessario ora specificare il microcontrollore che vogliamo utilizzare. Per fare questo si clicca con il mouse sul simbolo del circuito integrato in alto a sinistra della schermata di FLIP. Compare una lista di possibili microcontrollori.
Avendo montato un AT90USB1287 scelgo questo e premo OK. Dobbiamo ora effettuare la connessione con il micro e lo facciamo cliccando il tasto con il disegno della presa USB in alto a sinistra della schermata di FLIP e alla destra del simbolo del circuito integrato. Nel menù a tendina che compare selezioniamo USB e comparirà la finestra di connessione.
Premiamo il tasto "Open" e finalmente la scheramata di FLIP verrà visualizzata con tutti comandi disponibili.
Diamo ora uno sguardo alla schermata di FLIP.
- A sinistra troviamo una parte denominata "Operation Flow" che indica la serie di operazioni che verranno effettuate premendo il tasto "Run". Ci interessa perché tramite queste operazioni potremo caricare i nostri programmi e lo faremo cliccando sul tasto "Run".
- Per caricare in FLIP il programma da scrivere nella FLASH del micro si seleziona dal menu "File" la voce "Load HEX file ...". Una volta caricato basterà premere "Run" per scrivere il programma FLASH.
- La parte centrale della schermata contiene le indicazioni sulla memoria su cui si sta lavorando, nel nostro caso la FLASH.
- Premendo il tasto "Select EEPROM" il programma darà informazioni sulla EEPROM interna e la possibilità di programmarne il contenuto. Premendo nuovamente il tasto (che avrà cambiato scritta in "Select FLASH") si ritorna a fare riferimento alla FLASH.
- Nella parte destra troviamo le informazioni sul micro ed il pulsante "Start Application". Cliccando su questo tasto si lancia il programma utente scritto nella FLASH ma ritorneremo su questa funzione più avanti.
Per ora lasciamo aperto il FLIP e proseguiamo con la stesura di un programmino di prova utilizzando AVR Studio 5.
Programma di prova
Per verificare che tutto funzioni ho scritto il mio solito programma di prova che semplicemente fa muovere dei pin incrementando una variabile e scrivendola su una porta. Anche questa volta ho utilizzato AVR Studio 5 ed i passi per creare un nuovo progetto si possono leggere nel mio precedente articolo Iniziare con AVR ATmega. Il programma è molto semplice e questo è il listato del sorgente.
/* * ProvaAT90USB1287.c * * Created: 19/07/11 12:29:15 * Author: TardoFreak */ #include <avr/io.h> #include <avr/wdt.h> int main(void) { unsigned char c; // disabilita watchdog MCUSR &= ~(1 << WDRF); wdt_disable(); // Programma la porta B come tutte uscite DDRB = 0xff; c = 0; // Loop infinito di incremento while(1) { PORTB = c; c++; } }
Una cosa è da notare e da tenere presente. All' inizio del mai vi sono due linee dopo il commento "disabilita watchdog". Queste due linee sono estremamente importanti perché non è possibile disabilitare il watchdog tramite il suo fuse. Nessun fuse può essere cambiato quando si usa il bootloader ma questo non è un problema perché si può configurare la macchina tramite il firmware. Bisogna però tenerlo bene a mente per evitare problemi.
Caricamento del programma
E' giunto quindi il fatidico momento di caricare il programma nel micro e farlo partire. Bisogna cercare dov'è il file HEX. Utilizzando AVR Studio 5 il file si trova in (cartella del progetto)\Debug\ o in (cartella del progetto)\Release\. Io ho selezionato l' opzione di progetto "Release" quindi il file HEX si trova in quella cartella. Se mi avete seguito fino a questo punto avete ancora aperto il FLIP, se l' avete chiuso premete e tenete premuto il tasto BOOT, premete il tasto RESET (il PC emetterà il suono di quando si collega una periferica USB), lanciate FLIP, selezionate il tipo di micro, connettetevi, dal menu "File" selezionate "Load HEX File ..." e caricate il file HEX.
Premiamo quindi il tasto "Run" in basso a sinistra della schermata di FLIP ed il programma verrà caricato nel micro. Per farlo partire ci sono due possibilità: Premere il tasto "Start Application" (preferibile) oppure premere il pulsante di RESET sulla scheda. Appena il programma parte il PC emette il suono che si sente quando si scollega una periferica USB che sta a significare che il micro non sta più eseguendo il firmware del bootoloader ma queello che gli abbiamo programmato.
Per verificarlo basta prendere l' oscilloscopio e collegarsi fra un piedino di massa (6,22,53 o 63) ed il piedino 10 (PB0) ad esempio, vediamo un' onda quadra. Dal piedino 11 (PB1) uscirà un' onda quadra di frequenza pari alla metà di quella che esce dal piedino 10 e così via.
Facciamo lampeggiare un LED
"Non ho l' oscilloscopio, come posso verificare che tutto funzioni?" Non c'e' problema, ho scritto un programma che fa lampeggiare un LED a frequenza di 1Hz (con quarzo da 16MHz.) o di 0,5Hz. (con quarzo da 8MHz.) che è questo.
/* * ProvaAT90USB1287.c * * Created: 19/07/11 12:29:15 * Author: TardoFreak */ #include <avr/io.h> #include <avr/interrupt.h> #include <avr/wdt.h> #include <avr/pgmspace.h> // Timer software. // Nota: vanno dichiarate come "volatile" per fare in modo che il // valore sia sempre e comunque letto evitando che l' ottimizzazione // non lo faccia. volatile unsigned short SoftTimer1; // Routine di servizio chiamata quando il contenuto del comparatore A // corrisponde al valore del timer. Quando raggiunge tale valore il // timer viene resettato e viene invocata questa routine. ISR(TIMER1_COMPA_vect) { if(SoftTimer1) SoftTimer1--; } //-------------------------------------------------------------------------- int main(void) { // disabilita watchdog MCUSR &= ~(1 << WDRF); wdt_disable(); // Inizializza timer 1 per timeout 10ms // Questa istruzione assicura che l' I/O clock per il timer1 sia abilitato PRR0 &= ~(1<<PRTIM1); // Carica il registro di comparazione per ottenere 10ms OCR1A = 3125; // Enable output compare A match TIMSK1 = (1<<OCIE1A)|(0<<TOIE1); // Avvia il timer1, prescaler 1/64 modo operativo Clear Top Count TCCR1B = (0<<WGM13)|(1<<WGM12)|(0<<CS12)|(1<<CS11)|(1<<CS10); // Predispone la porta B come uscita DDRB = 0xff; // Abilita le interrupt sei(); while(1) { if(!SoftTimer1) { PORTB ^= 0x01; // Commuta l' uscita PB0 SoftTimer1 = 50; // Carica il timer software per intervallo 500ms. } } }
Che, a dirla tutta, è il programma del mio precedente articolo al quale ho solamente aggiunto la disabilitazione del watchdog. Ma non lo dite a nessuno così posso fare il figo e dire che ho scritto il programma ex novo ih ih ih.
A parte gli scherzi, ho montato il Pierin su una breadboard, collegato l' anodo di un LED al piedino 10 in serie ad una resistenza da 2K7 verso massa (uso LED ad alta efficienza), caricato il programma, fatto partire ed il LED lampeggia.
Ora capisco che è un po' difficile vedere un lampeggio in una foto ma il LED acceso che si vede in foto rimane acceso per 1s. e poi rimane spento per un altro secondo, fidatevi. Giurin giurello, che mi venisse un colpo se dico il falso eh eh eh.
Conclusioni
E' vero che ho fatto fare questi circuiti stampati perché mi servono per i miei lavori, è vero che non userò il bootloader per sviluppare i miei progetti poiché ho i programmatori ISP e JTAG ,ma è anche vero che ho trovato questo micro estremamente divertente e simpatico.
Usare un oggetto del genere mi ha riportato indietro negli anni facendomi rivivere emozioni che non provavo più da tempo. Mi sembra di essere tornato a 16 anni quando quell' amico ingegnere mi ha regalato un micro romless e mi ha spiegato come utilizzarlo senza emulatore. La soddisfazione di lavorare su un micro e programmarlo senza dover spendere una lira per l' acquisto di un programmatore ha un suo fascino particolare, sembra di aver raggiunto chissà quale traguardo! E' un qualcosa difficile da descrivere ma bello al punto che quasi mi dispiace non utilizzarlo in futuro. Che volete che vi dica? L' elettronica è anche una passione e bisogna essere motivati per studiarla, sperimentarla e via discorrendo, ma questa passione che lo si voglia o no, ogni tanto si fa sentire. Ed è una gran bella cosa, almeno per me lo è.
E per sempre rimarrà il ricordo di mio Papà, "Pierin", che mi vedeva da bambino trafficare con i componenti elettronici (a volte mi mandava a forza a giocare a pallone nei giardini) e che poi mi ha visto intraprendere la via dell' elettronica. Mi piace pensare che sia lassù da qualche parte, sorridente come sempre, e che magari pensi "sei sempre il solito, non cambierai mai".
Ciao Papà.
Circuito stampato
Questo circuito stampato l' ho realizzato per le mie necessità ma ho cercato di ampliarlo in modo che potesse svolgere anche le funzioni di sistema di sviluppo per gli AT90, quindi è in vendita a 13,90€ IVA inclusa. Se interessa potete contattarmi direttamente o scrivere una e-mail a questo indirizzo