LA CAMPANA

C’è chi ha letto questa notizia prima di te.
Iscriviti per ricevere nuovi articoli.
E-mail
Nome
Cognome
Come vuoi leggere La Campana?
Niente spam

In precedenza, per eseguire il flashing dei microcontrollori AVR, utilizzavo AvrUsb500 di Petka (STK500) e AVR Studio 4. Tutto andava bene finché il chip FTDI FT232RL non si è guastato e non voleva più funzionare. Successivamente ho iniziato a cercare alternative e mi sono imbattuto Programmatore AVR Khazama E . Il programma mi è piaciuto subito per il suo minimalismo, è semplice e intuitivo interfaccia chiara. Piccolo e remoto. Da allora utilizzo questo meraviglioso programmatore AVR.

Programmatore AVR Khazama - caratteristiche

Khazama funziona con tutti i microcontrollori AVR più diffusi, consente di programmare flash ed eeprom, leggere i contenuti memoria flash ed eeprom, cancellare il chip e modificare anche la configurazione dei bit del fusibile (Fuses and Lock Bits). Tutto ciò di cui hai bisogno per eseguire il flashing dei microcontrollori AVR. I fusibili vengono configurati selezionando una sorgente di clock dall'elenco a discesa, quindi la probabilità di "uccidere" il controller per errore è drasticamente ridotta. I fusibili possono anche essere modificati posizionando le caselle di controllo nel campo inferiore, ma non è possibile posizionare le caselle di controllo su una configurazione inesistente, il che rende la configurazione dei fusibili più sicura. E anche questo è un grande vantaggio.

Fusibili di registrazione

I fusibili vengono scritti nella memoria del microcontrollore premendo il pulsante Scrivi tutto. C'è un pulsante Salva per salvare la configurazione corrente e Carica restituisce quella salvata. Il pulsante Default è progettato per registrare la configurazione del fusibile standard, quella con cui vengono forniti i microcontrollori dalla fabbrica, solitamente 1 MHz dall'RC interno.
In generale, da quando utilizzo questo programmatore, si è dimostrato il migliore in termini di stabilità, sicurezza e velocità di funzionamento. Lo consiglio a chiunque voglia programmare microcontrollori AVR.

Proprio come un teatro inizia con una gruccia, così la programmazione dei microcontrollori inizia con la scelta di un buon programmatore. Dato che ho iniziato a padroneggiare i microcontrollori ATMEL, ho dovuto familiarizzare a fondo con ciò che offrono i produttori. Offrono molte cose interessanti e gustose, solo a prezzi esorbitanti. Ad esempio, una sciarpa con un microcontrollore a venti gambe con una coppia di resistori e diodi come cablaggio costa come un "aeroplano". Pertanto, è sorta la questione dell'autoassemblaggio del programmatore. Dopo un lungo studio degli sviluppi di radioamatori esperti, si è deciso di assemblare un programmatore USBASP ben collaudato, il cui cervello è il microcontrollore Atmega8 (ci sono anche opzioni firmware per atmega88 e atmega48). Il cablaggio minimo del microcontrollore ti consente di assemblare un programmatore abbastanza in miniatura che puoi sempre portare con te, come una chiavetta USB.

L'autore di questo programmatore è il tedesco Thomas Fichl, la sua pagina di sviluppo con schemi, file di circuiti stampati e driver.
Una volta deciso di assemblare un programmatore in miniatura, ho ridisegnato il circuito per il microcontrollore Atmega8 nel pacchetto TQFP32 (la piedinatura del microcontrollore è diversa dalla piedinatura nel pacchetto DIP):

Il ponticello J1 viene utilizzato se è necessario eseguire il flashing di un microcontrollore con una frequenza di clock inferiore a 1,5 MHz. A proposito, questo saltatore può essere eliminato del tutto posizionando a terra la 25a gamba dell'MK. Quindi il programmatore funzionerà sempre a frequenza ridotta. Personalmente ho notato che la programmazione a velocità ridotta richiede una frazione di secondo in più, e quindi ora non tiro il ponticello, ma ci cucio costantemente.
I diodi Zener D1 e D2 vengono utilizzati per far corrispondere i livelli tra il programmatore e il bus USB; funzionerà senza di essi, ma non su tutti i computer.
Il LED blu indica che il circuito è pronto per essere programmato; il LED rosso si accende durante la programmazione. I contatti di programmazione si trovano sul connettore IDC-06, la piedinatura è conforme allo standard ATMEL per un connettore ISP a 6 pin:

Questo connettore contiene i contatti per l'alimentazione dei dispositivi programmabili; qui viene prelevato direttamente dalla porta USB del computer, quindi bisogna fare attenzione ed evitare cortocircuiti. Lo stesso connettore viene utilizzato anche per la programmazione del microcontrollore di controllo; per fare ciò è sufficiente collegare i pin di Reset sul connettore e sul microcontrollore (vedi linea tratteggiata rossa nello schema). Nel circuito dell'autore, questo viene fatto con un ponticello, ma non ho ingombrato la scheda e l'ho rimossa. Per un singolo firmware sarà sufficiente un semplice ponticello. La tavola si è rivelata bifacciale, misurando 45x18 mm.

All'estremità del dispositivo si trovano il connettore di programmazione e un ponticello per ridurre la velocità del programmatore, questo è molto comodo

Firmware del microcontrollore di controllo
Quindi, dopo aver assemblato il dispositivo, la cosa più importante rimasta è flashare il microcontrollore di controllo. Gli amici che hanno ancora computer con porta LPT sono adatti a questi scopi :) Il più semplice programmatore a cinque fili per AVR
Il microcontrollore può essere flashato dal connettore di programmazione collegando i pin di Reset del microcontrollore (gamba 29) e il connettore. Il firmware esiste per i modelli Atmega48, Atmega8 e Atmega88. Si consiglia di utilizzare una delle ultime due pietre, poiché il supporto per la versione Atmega48 è stato interrotto e ultima versione Il firmware risale al 2009. E le versioni per l'ottava e l'88a pietra sono costantemente aggiornate e sembra che l'autore stia pianificando di aggiungere un debugger in-circuit alla funzionalità. Otteniamo il firmware dalla pagina tedesca. Per caricare il programma di controllo sul microcontrollore, ho utilizzato il programma PonyProg. Durante la programmazione è necessario impostare il cristallo in modo che funzioni da una sorgente di clock esterna a 12 MHz. Screenshot del programma con le impostazioni dei ponticelli dei fusibili in PonyProg:

Dopo aver eseguito il flashing del firmware, il LED collegato alla gamba 23 del microcontrollore dovrebbe accendersi. Questo sarà un segno sicuro che il programmatore è stato programmato con successo ed è pronto per l'uso.

Installazione del driver
L'installazione è stata effettuata su una macchina con Windows 7 e non si sono verificati problemi. Quando ti colleghi al computer per la prima volta, verrà visualizzato un messaggio che indica che è stato rilevato un nuovo dispositivo e ti chiede di installare un driver. Seleziona l'installazione dalla posizione specificata:

Apparirà immediatamente una finestra che ti avverte che il driver che stai installando non ha firma digitale per quelli piccoli e morbidi:

Ignoriamo l'avviso e proseguiamo l'installazione, dopo una breve pausa apparirà una finestra che ci informa che l'operazione di installazione del driver è stata completata con successo

Questo è tutto, il programmatore è ora pronto per l'uso.

Programmatore AVR Khazama
Per lavorare con il programmatore, ho scelto il flasher Khazama AVR Programmer. Un programma meraviglioso con un'interfaccia minimalista.

Funziona con tutti i microcontrollori AVR più diffusi, consente di eseguire il flashing di flash ed eeprom, visualizzare il contenuto della memoria, cancellare il chip e anche modificare la configurazione dei bit del fusibile. In generale, un set completamente standard. L'impostazione del fusibile viene effettuata selezionando la sorgente dell'orologio dall'elenco a discesa, quindi la probabilità di bloccare erroneamente il cristallo è drasticamente ridotta. I fusibili possono anche essere cambiati posizionando le caselle di controllo nel campo inferiore, ma non è possibile posizionare le caselle di controllo su una configurazione inesistente, e questo è anche un grande vantaggio in termini di sicurezza.

I fusibili vengono scritti nella memoria MK, come puoi immaginare, premendo il pulsante Scrivi tutto. Il pulsante Salva salva la configurazione corrente e il pulsante Carica restituisce quella salvata. Non riuscivo davvero a capirlo applicazione pratica questi pulsanti. Il pulsante Default è progettato per registrare la configurazione del fusibile standard, quella con cui vengono forniti i microcontrollori dalla fabbrica (solitamente 1 MHz dall'RC interno).
In generale, da quando utilizzo questo programmatore, si è dimostrato il migliore in termini di stabilità e velocità di funzionamento. Ha funzionato senza problemi sia su un vecchio PC desktop che su un nuovo laptop.

È possibile scaricare il file PCB in SprintLayout utilizzando

Il programma è stato aggiornato alla versione 08.06.2010.
Autore UniProf lavora instancabilmente per migliorare il suo programma, rendendolo ancora migliore. Versione del programma da 08.06.2010 cuce i microcontrollori molto meglio. Osservato dentro versione precedente I frequenti errori durante la programmazione senza la casella di controllo "freno" appartengono al passato. Tutto ciò che amiamo di UniProf rimane al suo posto.

Ad essere sincero, all'inizio ho deciso di utilizzare il programma AVRDUDE per lampeggiare i microcontrollori. AVRDUDIO potente programma, merita rispetto: può funzionare con un numero enorme di programmatori, con una serie di impostazioni ed è abbastanza ampiamente utilizzato per i microcontrollori AVR. Il programma non ha una propria "GUI" (funziona dalla riga di comando) e avrei scritto file batch per ciascun firmware per eseguire il flashing del controller con un clic. Ma dopo averci pensato un po’, sono giunto alla conclusione:
- il programma dovrebbe essere semplice e accessibile, in modo che anche una persona che non ha mai lavorato con i microcontrollori possa capirlo (beh, sono un tale idealista :));
— era piccolo, portatile, con una propria GUI, mostrava visivamente tutte le fasi della programmazione e supportava i microcontrollori utilizzati nel blog.
Sfortunatamente AVRDUDE non soddisfa questi requisiti.
Ma un altro programma è adatto - Programmatore universale UniProf per AVR. Il programma presenta alcuni svantaggi, ma sono compensati dalla sua semplicità e accessibilità. Inoltre UniProf può lavorare con i nostri programmatori LPT e COM. Pertanto, ho deciso di fare un post-recensione generale del programma UniProf, e in seguito descriverò separatamente la programmazione tramite porta LPT e COM. COSÌ …

L'autore del programma è Mikhail Nikolaev. Il programma ha una storia abbastanza lunga, ma non può vantarsi aggiornamenti frequenti. Allo stesso tempo, il programma è così semplice e conveniente che ora non perde la sua rilevanza nemmeno sullo sfondo di programmi più avanzati.

Iniziamo a fare conoscenza.
contiene tutte le funzionalità del programma. Non è necessario navigare nel menu: tutto è fatto con un clic. Il programma ha un proprio aiuto (premi F1) in cui tutto è descritto in dettaglio. L'interfaccia di UniProf è intuitiva, ma passiamo agli elementi della finestra.
L'elemento principale è la finestra PROGRAMMA. Esso (nelle celle della tabella) visualizza i valori letti o scritti delle celle di memoria del controller. Se deselezioni la casella PROGRAMMA, la finestra scomparirà. C'è anche una casella di controllo per EEPROM per mostrare o nascondere la finestra EEPROM della memoria del controller (nella maggior parte dei casi non abbiamo bisogno della EEPROM: deselezionala).

Fila superiore di pulsanti (da sinistra a destra)

Scrivere il contenuto delle finestre (firmware) sul controller. Per prima cosa devi caricare il firmware dal file in Windows. (se è spuntata la casella EEPROM, viene scritta anche l'area EEPROM).

Controllo (verifica) della memoria del controller con valori nelle caselle. Le differenze sono indicate da asterischi. (Dopo la registrazione, la verifica viene eseguita automaticamente, quindi non è necessario controllare).

Controllare la pulizia del controller. Per un controller "pulito", tutte le celle di memoria contengono 0xFF, che viene controllato.

Impostazione dei bit FUSE. Seleziona attentamente le caselle come nell'immagine allegata a ciascun firmware.
Importante! Prima di far lampeggiare i bit FUSE, assicurati di selezionare la casella di controllo "freno", ciò ridurrà il rischio di una registrazione errata.

Squadra di basso livello. Meglio non toccarlo.

Cancella il controller. Prima di ogni programmazione pulire il cristallo.

I primi tre aprire il file del firmware tipo appropriato (pubblicherò firmware HEX) e riempirò le finestre con i valori con apri il file. I prossimi tre salvare su file tipo di valore selezionato dalle caselle.

"osca"— lettura dei byte di calibrazione del controller. Non abbiamo bisogno.

Aiuto F1– richiama la guida integrata.

Prossimi due pulsanti debug nel controller- Non abbiamo bisogno.

Perni LPT– cosa molto utile per chi ha già installato alcune linee di porte LPT o utilizza un programmatore di diversa concezione. Consente di assegnare eventuali linee di porta per sostituire quelle bruciate.

Caselle di controllo sotto i pulsanti.

Lo mettiamo come in foto. Il primo mostra i byte letti o pronti per essere scritti nel controller. Il secondo serve per la scrittura forzata di 0xFF in una cella vuota. Il terzo è l'inversione delle linee della porta COM (quando si utilizza un chip buffer nel programmatore). Il nome del controller collegato si illuminerà di blu. Successivamente, accendere/spegnere la finestra EEPROM. La frequenza del sistema è mostrata in rosso.
Importante! Se si fa clic su quello rosso, il programma si sincronizzerà nuovamente con il controller. Premere, per ogni evenienza, prima che inizi la programmazione.

Altri elementi della finestra.

Queste caselle rimuovono i pulsanti non necessari (per non confondersi). Lo mettiamo come in foto.

Molto importante! Casella di controllo obbligatoria. Nella vecchia versione del programma c'erano alcuni problemi con l'affidabilità della programmazione senza questa casella di controllo. IN nuova versione programma questo problema è risolto! Ma se si verificano errori durante la scrittura o la lettura, il programma lo ammette immediatamente e onestamente. Se ce l’hai spunta la casella “freno” e tutto verrà registrato senza problemi! Rallenta e basta. Quando si registrano i fusibili è necessario un "freno"! Non c'è bisogno di correre rischi.

Puoi specificare quale area masterizzare: imposta "Tutto!"

Selezione del porto con cui lavoreremo. Se non sappiamo dove abbiamo indicato il programmatore, esaminiamo tutto uno per uno finché il controller non si illumina di blu.

Ci sono anche “tasti di scelta rapida”.

F2 Impostazione del ritardo di registrazione, normale = 6. Se ci sono errori, provare ad aumentarlo (non si osserva alcun effetto).

F3 Mostra un elenco di controller supportati.

Grigio -,+ Diminuire o aumentare il carattere dei numeri nelle finestre Flash ed EEPROM: questo può essere utile quando si ridimensiona la finestra.

Esc– annulla l'azione corrente.

Ce ne sono altri, ma non molto necessari: leggi la guida integrata.

UniProf può essere scaricato qui:
- Programmatore per AVR. Guardiamo avr.nikolaew.org

PS Ad ogni modo, col tempo useremo AVRDUDE: una cosa potente!

(Visitato 48.833 volte, 11 visite oggi)

Scopriamo cos'è un'interfaccia ISP e guardiamo un programmatore ISP USB economico e conveniente. Diamo un'occhiata ai diagrammi schematici dei programmatori più semplici per microcontrollori AVR che utilizzano le porte COM e LPT su un computer. Queste informazioni sono sufficienti per eseguire il flashing della maggior parte dei modelli di microcontrollori AVR non solo su Linux, ma anche su altri sistemi operativi.

Interfaccia di programmazione interna al sistema ISP

Per scrivere un programma sul microcontrollore AVR avrai bisogno di un programmatore.

Programmatore- è piccolo circuito elettronico, che permette di collegare il microcontrollore ad una delle porte del computer (COM, LPT, USB) per la successiva lettura e scrittura del firmware (programmazione).

Esistono molti progetti diversi di programmatori per microcontrollori AVR che si collegano a diverse porte del computer.

L'opzione più affidabile e conveniente è un programmatore che si collega a una porta USB, poiché è nuovo computer desktop e i laptop non hanno più porte COM e LPT installate.

Nei dispositivi finiti, il programmatore è collegato al microcontrollore tramite un'interfaccia ISP(In Programmazione di sistema) - interfaccia di programmazione interna al sistema. L'interfaccia ISP è composta da diversi conduttori attraverso i quali vengono ricevuti un segnale di clock e dati per collegare il programmatore al microcontrollore.

Di norma l'interfaccia ISP è posizionata su schede a dieci o sei pin, alle quali il programmatore è collegato tramite un apposito connettore tramite un cavo.

Riso. 4. Interfaccia ISP sulla scheda.

Scopo dei pin nell'interfaccia dell'ISP:

  1. VCC - alimentatore più, solitamente +5 V;
  2. GND - potenza negativa, terra (terra);
  3. MOSI - ingresso dati (Master Out Slave In);
  4. MISO - uscita dati (Master In Slave Out);
  5. SCK - segnale di clock (Serial Clock);
  6. RST - per fornire un segnale di ripristino.

Per la programmazione in-circuit del microcontrollore sono sufficienti solo 4 pin, poiché il microcontrollore può essere alimentato dal circuito stesso in cui è installato.

Come collegare il programmatore al chip del microcontrollore AVR se non è saldato nel circuito? - molto semplicemente, utilizzando gli stessi pin dell'interfaccia ISP, se necessario, alimentando il microcontrollore dalla fonte di alimentazione.

Programmatore ASP USB ISP

Per lavorare con i chip AVR, ho acquistato un economico programmatore ISP USB per circa $ 10. Un dispositivo del genere è ora in vendita in molti negozi online nazionali ed esteri, quindi non dovrebbero esserci problemi con l'acquisto.

Riso. 5. USB ISP - programmatore con cavo per la programmazione in-circuit dei microcontrollori AVR di ATMEL.

Questo programmatore è sicuro da usare, di piccole dimensioni e supportato dalla maggior parte dei programmi per il flashing dei microcontrollori AVR. L'ISP USB funziona con i sistemi operativi Sistemi Linux, Mac OS X e Windows. Per Linux non è necessario installare alcun driver, dopo aver collegato il programmatore a porta USB Il dispositivo verrà immediatamente rilevato e pronto per l'uso.

Di seguito fornirò la piedinatura dei connettori del programmatore ISP USB: ci sarà utile in seguito quando ci collegheremo al microcontrollore.

Riso. 6. Posizione dei pin sul connettore USB ISP (pinout).

Riso. 7. Posizione dei contatti nelle prese dei connettori collegati al programmatore USB ISP.

Cosa fare se non è possibile acquistare un programmatore ISP USB?- puoi programmare i microcontrollori utilizzando semplici programmatori fatti in casa che si collegano a una porta COM o LPT, ma è meglio creare tu stesso un ISP USB e programmare il chip del microcontrollore una volta con un semplice programmatore fatto in casa tramite una porta COM o LPT.

Riso. 8. Diagramma schematico di un programmatore ISP USB ASP fatto in casa.

Informazioni dettagliate sulla produzione di USB ASP, nonché su circuiti stampati, driver e firmware per il microcontrollore sono disponibili sul sito ufficiale: http://www.fischl.de/usbasp/

Inoltre, ci sono molte risorse su questo programmatore gratuito su Internet, ci sono molti layout di circuiti stampati già pronti, incluso nel programma SprintLayout, quindi non ci soffermeremo su questo in dettaglio in questo articolo.

Programmatore che utilizza la porta COM

Questo programmatore è anche chiamato "programmatore Gromov", in onore di colui che ha ideato questo schema, il creatore del programma Algorithm Builder (un ambiente grafico per programmare AVR sotto Windows utilizzando linguaggio algoritmico) - G.L. Gromova.

Questo programmatore consente di programmare i chip AVR utilizzando la porta COM del computer - interfaccia RS232. Per assemblare un programmatore di questo tipo, avrai bisogno di un minimo di parti: 3 diodi, 7 resistori, un connettore DB-9 o DB-25 (a seconda del connettore di accoppiamento installato nel tuo computer) e un connettore ISP per il collegamento al microcontrollore (o solo alcuni conduttori da chip). Nel circuito è possibile utilizzare qualsiasi diodo a bassa potenza.

Riso. 9. Diagramma schematico del programmatore del microcontrollore AVR tramite una porta COM del computer.

Per completezza di informazione di seguito fornirò il pinout delle porte RS-232 per le opzioni DB-9 e DB-25.

Riso. 10. RS232 - Porta COM, disposizione pin DB-9.

Riso. 11. Porta COM RS232 DB-25 - posizione dei pin sui connettori.

Programmatore che utilizza la porta LPT

Come sappiamo, la porta LPT di un computer è progettata per collegare una stampante locale (Local Printer Port), ma ciò nonostante viene spesso utilizzata per collegare vari dispositivi e prodotti fatti in casa. In questo caso possiamo utilizzarlo per programmare i microcontrollori AVR assemblando a questo scopo un circuito molto semplice, mostrato di seguito.

Riso. 12. Schema schematico del programmatore per microcontrollori AVR con utilizzando LPT porta del computer.

Come puoi vedere, il circuito è ancora più semplice rispetto alla versione con, qui abbiamo solo bisogno di 4 resistori a bassa potenza e un connettore (maschio, con pin) per il collegamento alla porta LPT del computer.

Riso. 13. Posizione dei pin per i connettori della porta LPT.

Tutte le parti e le connessioni possono essere posizionate nell'alloggiamento del connettore LPT e per il collegamento al microcontrollore è possibile estrarre un cavo con un connettore per l'interfaccia ISP o semplicemente i conduttori necessari per il collegamento al microchip.

Software e note

Dopo aver collegato il programmatore COM o LPT al microcontrollore è necessario ricordarsi di alimentare il microchip stesso. Come fonte di alimentazione per il microcontrollore è possibile utilizzare batterie o un alimentatore con stabilizzatore; questo sarà il più sicuro sia per la porta del computer che per il chip. Abbiamo già discusso di come usarlo.

Sotto Linux c'è un programma molto potente che può funzionare con i programmatori USB ASP, COM e LPT: questo programma AVRDUDIO, se ne parlerà nei paragrafi successivi.

Per eseguire il flashing dei chip AVR sotto Windows utilizzando i dati dei programmatori COM e LPT, è necessario il programma UniProf di Nikolaev, che è un programmatore universale per AVR (avr.nikolaew.org).

ATTENZIONE! Prestare estrema attenzione e attenzione quando si assemblano e si utilizzano programmatori che utilizzano la porta COM o LPT di un computer, un semplice errore può facilmente incendiare questi porti. Per operazione normale Per tali programmatori, dovresti provare a utilizzare i cavi più corti possibili dal connettore al circuito del programmatore e al microcontrollore. È consigliabile che il microprocessore del computer abbia una frequenza non superiore a 1-2 GHz ed è consigliabile utilizzare Win2000 o WinXP come sistema operativo per programmare i chip.

È anche importante sapere che gli adattatori USB-RS232 (porta USB-COM) molto probabilmente non funzioneranno con il programmatore di Gromov; funzioneranno solo quelli con chip più recenti, quindi è meglio cercare una macchina con una porta COM nativa.

Conclusione

I programmatori discussi nell'articolo sono solo alcuni dei più convenienti e soluzioni semplici da un ampio elenco di programmatori AVR: USBTinyISP, AVR-Doper, AVR vusbtiny, AVRISP-MkII, programmatori FTDI e altri.

Ora, in ogni caso, puoi assemblare un programmatore a tua disposizione e flashare almeno un chip, sulla base del quale puoi assemblare un altro programmatore più conveniente o qualche altro dispositivo.

Nel prossimo articolo scopriremo come connettersi modelli diversi Microcontrollori AVR al programmatore, scopri dove trovare informazioni sulla piedinatura dei microcontrollori.

Su una breadboard metaboard molto comodo da montare ISP programmatore per AVR microcontrollori AVRProg. Lo schema è molto semplice, fonte Il programmatore è aperto e disponibile per due varianti del programmatore: esiste una versione USBasp e versione AVR-Doper. Il circuito del programmatore è assemblato direttamente sul campo di prototipazione della metaboard. Il firmware (versione programmatore) può essere facilmente modificato tramite un bootloader USB incorporato nella metaboard.

[Caratteristiche del programmatore AVRProg]

1. Il programmatore dispone di due prese per l'installazione di microcontrollori AVR programmabili in pacchetti DIP con 8, 20 e 28 pin, inclusi i popolari ATTiny25/45/85, ATTiny2313, ATMega8, ATMega48/88/168/328 (AVR a 8 pin inserito in una presa a 20 pin).

2. Per i microcontrollori programmabili, viene generata una frequenza di clock di 1 MHz (per quei microcontrollori i cui fusibili sono installati per funzionare con una frequenza di clock esterna o con un risonatore al quarzo esterno).

3. Il circuito del programmatore è molto semplice e conveniente per l'autoassemblaggio a casa.

4. Per il circuito di questo programmatore (AVRProg sulla scheda di prototipazione metaboard), sono state trasferite due versioni firmware: USBasp E AVR-Doper. In futuro è previsto anche il porting AVRminiProg. Per i collegamenti per scaricare il firmware, vedere.

5. Un connettore ISP a 10 pin separato con una piedinatura compatibile con l'ISP standard a 10 pin (le piedinature standard dei connettori ISP possono essere trovate in ), progettato per la programmazione in-circuit dei microcontrollori AVR (e anche come porta di uscita di debug nel Versione AVR-Doper, vedere sotto). Questo connettore fornisce una tensione di alimentazione di 5 volt per la scheda programmabile, che può essere collegata installando il ponticello JP5 (vedere lo schema elettrico del programmatore), una frequenza di clock di 1 MHz e segnali di ricezione e trasmissione UART di debug.

[Diagramma schematico del programmatore AVRProg]

Per semplificare il più possibile il circuito (e, di conseguenza, facilitare l'autoassemblaggio del programmatore), ne sono esclusi i convertitori di livello, che in generale vengono installati per abbinare i livelli logici del programmatore e quelli programmabili dall'ISP circuito, poiché la tensione di alimentazione del circuito del programmatore può differire dalla tensione di alimentazione dei dispositivi programmabili (vedere l'opzione di collegamento per tali convertitori di livello in). Ciò significa che il programmatore AVRProg e il dispositivo programmato tramite il connettore ISP SV1 dovrebbero, se possibile, essere alimentati approssimativamente dallo stesso livello di tensione (circa 5 volt). Al circuito vengono aggiunti i resistori R1..R7, collegati in serie al circuito del segnale digitale, che mitigano alquanto (ma non eliminano completamente) il problema della differenza di livelli logici. Questi resistori limitano la corrente massima e prevengono danni al dispositivo programmabile e al programmatore, che sono alimentati da tensioni diverse. Grazie a questi resistori e alla presenza di diodi protettivi nell'AVR, viene eseguita una conversione del livello del segnale 1MHZ, RIPRISTINA, MOSI, MISO, SCK, RXD, TXD, quindi dovrebbe essere possibile programmare dispositivi alimentati a 3,3 volt tramite ISP.

Inoltre è possibile fornire al dispositivo programmabile anche +5 volt. L'alimentazione si attiva impostando il jumper JP5. Si prega di notare che il circuito del programmatore AVRProg non ha un limite protettivo sulla corrente fornita al dispositivo da programmare. Naturalmente, tranne il caso in cui il programmatore stesso è alimentato tramite USB e il controller USB del computer ha tale protezione. Non installare mai il ponticello JP5 se il dispositivo programmabile ISP è alimentato dalla propria fonte di tensione e se la tensione di alimentazione del dispositivo programmabile (collegato tramite ISP SV1) è diversa da +5V!

Il circuito del programmatore utilizzato ISP a 10 pin"vecchio stile" (oltre a questa piedinatura ISP, ce ne sono anche più convenienti ISP a 6 pin connettori), poiché segnali aggiuntivi vengono emessi ai suoi piedini (che nella piedinatura ISP originale a 10 pin sono collegati a GND). Questi sono tre segnali aggiuntivi che puoi utilizzare per le esigenze del tuo dispositivo programmabile, se necessario:

X1MHZ- frequenza orologio 1 MHz. Può essere utilizzato per ripristinare i chip "bricked" progettati per funzionare con un oscillatore RC interno, ma che sono erroneamente impostati per utilizzare un cristallo esterno o un generatore di clock. Senza fornire una frequenza di clock esterna o collegare un quarzo, è impossibile programmare tali AVR; è qui che un segnale di clock esterno da 1 MHz può tornare utile.

XRXD- un ingresso della porta seriale che può accettare l'output di debug dal dispositivo programmabile. Questa funzione è supportata nella versione firmware AVR-Doper. Tutto ciò che il dispositivo sottoposto a debug trasmette tramite UART (l'UART hardware si trova in quasi tutti Microcontrollore AVR), può essere visualizzato in una finestra di terminale collegata a USB virtuale Porta COM AVR-Doper. Questa funzionalità semplifica la scrittura e il debug Software in un dispositivo programmabile dall'ISP su un microcontrollore AVR. Per utilizzare questa funzione, è necessario collegare l'uscita hardware TXD della porta UART dell'AVR programmabile al segnale XRXD (pin 10 del connettore ISP SV1) e utilizzare anche le macro di uscita di debug nel firmware in fase di debug (nel WinAVR librerie questa è una macro DBG, puoi anche usare printf, reindirizzato a UART).

XTXD- uscita della porta seriale, che può trasmettere dati utente arbitrari al dispositivo programmabile. Questa funzione è supportata nella versione firmware AVR-Doper. Tutto ciò che viene stampato nella finestra del terminale (collegato alla porta COM USB virtuale dell'AVR-Doper) verrà trasferito all'ingresso UART del dispositivo sottoposto a debug (l'UART hardware si trova in quasi tutti i microcontrollori AVR). Questo è usato meno comunemente dell'output di debug XRXD (tramite una macro DBG o un'istruzione printf), ma semplifica anche la scrittura e il debug del software su un dispositivo programmabile dall'ISP. Ad esempio, puoi inviare comandi di testo al dispositivo di cui stai eseguendo il debug direttamente dalla finestra del terminale. Per utilizzare questa funzione, è necessario collegare l'ingresso hardware RXD della porta UART dell'AVR programmabile al segnale XTXD (pin 8 del connettore ISP SV1).

La tensione di alimentazione ai chip AVR programmabili installati nelle prese IC1 e IC2 viene fornita dai due pin della metascheda PC3 e PC4 della scheda del microcontrollore (pin 4 e 5 del connettore JP3). Le porte PC3 e PC4 sono programmate come uscite e la loro corrente di uscita è sufficiente per alimentare direttamente un microcontrollore programmabile installato nella presa (due porte collegate in parallelo sono appositamente utilizzate per aumentare la capacità di carico dell'uscita). Se viene emesso un registro su PC3 e PC4. 1, quindi l'alimentazione viene fornita al microcontrollore programmabile. Questo stato è segnalato anche dall'accensione del LED rosso collegato al pin 1 del connettore JP3 (software controllato dal pin della porta PC0). Se viene emesso un registro su PC3 e PC4. 0, il microcontrollore programmabile è diseccitato (il LED è spento) e può essere liberamente rimosso dalla presa senza timore di danni elettrici.

[Assemblaggio del programmatore]

Per poter installare il connettore ISP SV1, è necessario dissaldare il connettore di alimentazione JP4 della metaboard (se era installato). L'assemblaggio non ha altre caratteristiche, basta collegare tutti i fili, guidati dallo schema elettrico, approssimativamente come mostrato nella fotografia. I fili multicolori vengono utilizzati semplicemente per chiarezza, per facilitare la comprensione del cablaggio dei diversi segnali. Un circuito assemblato correttamente inizia a funzionare immediatamente e non richiede alcun debug.

Molti componenti nello schema AVRProg non sono necessari per l'installazione. Ad esempio, se non hai bisogno di prese da letto e hai solo bisogno di un ISP, non è necessario installare o dissaldare le prese IC1 e IC2. Oppure, ad esempio, se non è necessaria la capacità di programmazione dell'ISP, non è possibile installare il connettore ISP SV1 e non sono necessari i resistori R1..R7 e il ponticello JP5.

Di seguito vengono descritte le differenze nel funzionamento di due versioni del programmatore firmware: USBasp e AVR-Doper. Entrambe le opzioni possono essere facilmente caricate nella memoria del chip tramite USB-bootloader e Khazama AVR Programmer (vedi), così hai sempre l'opportunità di eseguire facilmente il reflash di qualsiasi la versione richiesta programmatore Per attivare il bootloader è necessario installare il jumper JP6 Upload e, con la metaboard collegata via USB al computer, bisogna premere il pulsante S1 Reset (il jumper JP6 e il pulsante S1 sono inizialmente installati sulla metaboard). Dopo questa semplice procedura, sul computer apparirà il dispositivo USB USBasp (se non è presente il driver, allora Sistema Windows lo richiederà. Ottieni il driver dal pacchetto al link). Il dispositivo USB del bootloader USBasp (il bootloader USB emula il programmatore USBasp) può ricevere comandi dalla shell Khazama AVR Programmer. Utilizzando il programma Khazama AVR Programmer, puoi scrivere una qualsiasi delle due opzioni firmware del programmatore nella memoria del chip della metaboard: USBasp e AVR-Doper (vedi sotto per una descrizione del funzionamento con questo firmware). Le opzioni per il firmware già pronto (sia USBasp che AVR-Doper) sono disponibili al collegamento.

[USBasp]

Scarica il pacchetto di archivio dal collegamento e prendi da esso il file binario (file HEX) con il nome file corrispondente. Il nome del file indica il tipo di firmware (USBasp o AVR-Doper), il tipo di microcontrollore utilizzato nella metaboard (sia ATmega168PA che ATmega328P sono ugualmente adatti) e la frequenza dell'orologio al quarzo (solitamente il quarzo viene utilizzato su 16 MHz, ma sono possibili anche frequenze 12 , 15 , 16.5 , 20 MHz). Installa il file binario nella memoria del chip utilizzando il bootloader USB della metaboard e il programma Khazama AVR Programmer (seleziona il chip della metaboard al suo interno e). Non prestare attenzione agli avvertimenti sull'impossibilità di modificare la frequenza dell'orologio dell'ISP: il bootloader USB è il più semplificato possibile e non supporta l'elaborazione del comando di impostazione della frequenza dell'ISP (questo non è necessario per il bootloader).

Dopo che il firmware USBasp è stato scritto nella memoria del chip della metaboard, ricollegare il Scheda USB metaboard con il programmatore assemblato e il programmatore USBasp è pronto per l'uso. Per lavorare con il programmatore AVRProg nella versione USBasp, è possibile utilizzare lo stesso programma Programmatore AVR Khazama(versione 1.7.0 o successiva) o utilità della riga di comando avrdude.

La versione USBasp mi è piaciuta meno della versione AVR-Doper, poiché questo firmware presenta dei difetti legati alla mancanza di supporto per la modifica della frequenza dell'orologio dell'ISP (la shell del programmatore AVR Khazama visualizza messaggi di errore, ma il programmatore funziona ancora). Inoltre, alcuni chip non supportano i fusibili, come il chip ATmega328P. La situazione è leggermente migliore con avrdude, ma lavorare con questa utility non è molto conveniente, poiché dopo tutto è un'utilità della riga di comando, non una GUI. Tuttavia, per il lavoro in batch (quando è necessario automatizzare la programmazione del flusso grande quantità dispositivi) l'utilità avrdude potrebbe essere la più scelta migliore. Per lavorare con avrdude, seleziona il protocollo usbasp.

[AVR-Doper]

Il firmware della variante AVR-Doper viene flashato esattamente nello stesso modo in cui viene descritto il processo per USBasp, devi solo prendere un altro file firmware dall'archivio (il cui nome menziona AVR-Doper). Questa opzione, secondo me, merita più rispetto, poiché rappresenta il supporto del protocollo STK500 Atmel (questo protocollo è diventato uno standard de facto grazie alla popolarità della piattaforma AVR e dei relativi strumenti). Protocollo STK500 supportato Studio AVR, quindi l'opzione AVR-Doper funzionerà perfettamente insieme alla shell del programmatore AVRprog dell'ambiente di programmazione AVR Studio. Questo è molto conveniente per gli utenti di AVR Studio e apre ampie possibilità di programmazione del chip (su alcuni AVR non ci sono problemi con il supporto dei fusibili, come nel caso di Khazama + USBasp). Per lavorare con avrdude, seleziona il protocollo STK500.

Quando si lavora nell'ambiente AVR Studio, avviare l'utilità del programmatore AVRprog e selezionare l'opzione del programmatore STK500 nella finestra di dialogo iniziale. Attenzione: l'utility AVRprog proporrà di ricaricare il firmware del programmatore; rifiutatelo cliccando il pulsante “No”. Altrimenti, lavorare con l'utilità del programmatore non ha caratteristiche speciali e non merita una descrizione separata. Vedi anche una panoramica su come lavorare con AVRprog AVRStudio al link.

[Come installare i chip programmabili nei socket]

Programmazione DIP8 Programmazione DIP20 Programmazione DIP28

ATtiny25/45/85 ATtiny2313A-PU ATmega8, ATmega48/88/168/328

[Compilazione del codice sorgente USBasp e AVR-Doper]

Poiché è disponibile il codice sorgente del firmware del programmatore della metaboard AVRProg (per le versioni USBasp e AVR-Doper), può essere modificato in base alle proprie esigenze, ricompilato e flashato utilizzando un bootloader nella memoria del chip della metaboard. In particolare, nella versione USBasp è possibile aggiungere il supporto ai comandi per modificare la frequenza di clock dell'ISP.

C'è lo stesso errore nel codice sorgente di USBasp e AVR-Doper, che è associato ad una gestione errata della porta LED1 (la selezione della porta non corrisponde diagramma schematico). Questo errore è corretto nel codice sorgente, che puoi scaricare dal link.

La compilazione è semplice, la stessa per le versioni USBasp e AVR-Doper. Per compilare è necessario avere installato il pacchetto WinAVR. Decomprimere il codice sorgente del firmware in cartella separata. Vai alla directory principale del progetto in cui si trova il file makefile ed eseguilo riga di comando due comandi uno dopo l'altro: rendere pulito E crea metaboard. Successivamente, verrà visualizzato un file nella directory principale del progetto main.hex, che è il file binario del firmware del programmatore. È questo che deve essere caricato utilizzando un bootloader USB nella memoria del chip della metaboard.

La scheda di sviluppo metaboard può essere utilizzata con i microcontrollori ATmega168PA e ATmega328P. Sia ATmega168PA che ATmega328P sono adatti per il firmware del programmatore compilato per ATmega168PA. Tieni presente che il firmware compilato per l'ATmega328P non funziona (non ho ancora capito il motivo). Se utilizzi un risonatore al quarzo nella tua metaboard non a 16 MHz, ma a una frequenza diversa (12, 15, 16,5 o 20 MHz), modifica la definizione della macro nel makefile prima di compilare F_CPU.

1 . Il codice sorgente originale del firmware del programmatore USBasp, portato sulla metaboard AVRProg (attenzione: questo codice contiene errori, è meglio utilizzare il codice sorgente dal link). Vedi Download alla fine dell'articolo (carica avrprog-metaboard-1.1.zip o una versione più recente).
2 . Il codice sorgente originale del firmware del programmatore AVR-Doper, portato sulla metaboard AVRProg (attenzione: questo codice contiene errori, è meglio utilizzare il codice sorgente dal link).
3 . .
4 . Pinout del connettore ISP.
5 . Programmatore AVR Khazama e driver USB per USBasp (sistema operativo Windows). Per lavorare con la versione USBasp del programmatore AVRProg, installa Khazama versione 1.7.0 o successiva!
6 .

LA CAMPANA

C’è chi ha letto questa notizia prima di te.
Iscriviti per ricevere nuovi articoli.
E-mail
Nome
Cognome
Come vuoi leggere La Campana?
Niente spam