Sommario:

USARE EXtreme Burner per la programmazione del microcontrollore AVR: 8 passaggi
USARE EXtreme Burner per la programmazione del microcontrollore AVR: 8 passaggi

Video: USARE EXtreme Burner per la programmazione del microcontrollore AVR: 8 passaggi

Video: USARE EXtreme Burner per la programmazione del microcontrollore AVR: 8 passaggi
Video: AVR Fuse & Lock bytes [ATMega328/P, Arduino] 2024, Novembre
Anonim
USARE EXtreme Burner per la programmazione del microcontrollore AVR
USARE EXtreme Burner per la programmazione del microcontrollore AVR

Tutti voi fraternità di utenti AVR là fuori, e quelli che stanno appena entrando nel flusso, alcuni di voi hanno iniziato con i microcontrollori PIC e alcuni hanno iniziato con gli AVR ATMEL, questo è scritto per voi!

Quindi hai acquistato un USBASP perché è economico ed efficace per eseguire il flashing della ROM sul tuo dispositivo Atmega, o forse sulla gamma ATTINY. Questi possono essere ottenuti per meno di 5$, come cloni cinesi dell'Open source USB-ASP! AVRdude è il software per programmarli.

Senza dubbio sai come generare un file esadecimale usando Atmel Studio (uso ancora AVR Studio v4.19 invece dell'ultima v7 perché è più scattante e veloce sul mio laptop leggero con CPU single core)/ Netbook e WINAVR install se stai leggendo questo. Qualsiasi cosa scritta in DotNet viene eseguita LENTAMENTE! e le versioni successive sono progettate per far funzionare il tuo laptop come una tartaruga! Puoi utilizzare Studio v4.19 la migliore versione di Studio di ATMEL per microcontrollori AVR, passando alla versione 7 quando ne hai davvero bisogno per i chip successivi e rendi più produttivo il tuo tempo sul laptop, lavorando invece di aspettare! Questo è quello che consiglio.

Una tipica riga di comando di un tizio AVR per programmare un Atmega con un file esadecimale, funziona in questo modo:

SCRIVI SU FLASH:AVRdude -s -c avrisp -p t44 -P usb -U "flash:w:D:\ARDUINO\pwmeg1.hex:a"

qui pwmeg1.hex è il file esadecimale Intel da "masterizzare" o "flash" nell'"MCU di destinazione" nel microcontrollore Lingo

Questo è un boccone da ricordare! Potresti scrivere un file batch ed eseguirlo nella riga di comando in Windows, nominandolo write_flash.bat. Allo stesso modo per leggere le micce, un altro boccone di riga da ricordare! Diventa noioso.

per read flash + eeprom:AVRdude -s -c avrisp -p t44 -P usb -U "flash:r:D:\ARDUINO\pwmeg1.hex:i" -U "eeprom:r::i"

La soluzione è utilizzare uno degli strumenti front-end della GUI di facile utilizzo per AVRdude come Bitburner, programmatore Khazama, che sono quasi simili nel merito. Bruciatore estremo. Ho usato molto lo strumento gratuito: eXtreme Burner, è versatile, affidabile e questo tutorial parla di questo. Non solo può eseguire il flashing del file/programma esadecimale sull'MPU, utilizzando i comandi impartiti ad AVRdude in background, può anche aiutarti a impostare i FUSE, un argomento complicato che spesso confonde i principianti con la programmazione dell'AVR. Ecco un link a un ottimo tutorial sull'argomento FUSIBILI che puoi esaminare o ripassare. Una parola di cautela: ATMEL utilizza lo stato '1' di un bit FUSE per indicare il suo stato 'predefinito' (stato non impostato o non programmato) e '0' per indicare il suo stato programmato o impostato o attivato! Questo è esattamente l'opposto di ciò che si fa con i bit FUSE in un microcontrollore PIC. Fai attenzione quando modifichi i bit del fusibile dell'orologio, ad esempio facendo cambiare l'orologio RC interno al cristallo esterno perché ciò creerà problemi nel collegamento al chip senza un'impostazione del cristallo esterno. Allo stesso modo, fai attenzione quando cambi lo stato dei bit critici del fusibile come SPIEN e RESET DISABLE (questi dovrebbero essere sempre impostati su SPIEN = 0 e RESET DISABLE = 1 se desideri continuare a comunicare con l'MCU con il tuo USB-ASP in modalità ISP / SPI Se sbagli questo, avrai bisogno di un programmatore ad alta tensione per "smontare" il tuo AVR.

Se ti stai chiedendo "cosa diavolo sono i fusibili" e "cosa fanno"? Leggi questo eccellente articolo:

Un altro argomento correlato è come impostare la velocità di clock della tua MPU AVR che è in grado di raggiungere velocità da 1 Mhz fino a 16 o 20 Mhz. C'è anche una speciale opzione di cristallo a bassa frequenza 31.25kHz che, se progettata correttamente, può far funzionare il tuo AVR con batterie AA per 3 mesi!

Entrambi questi bit di fusibile di clock (sia frequenza che tipo di clock RC interno/cristallo esterno e altri bit di fusibile) possono essere impostati tramite la scheda FUSES in eXtreme Burner. Per prima cosa ti mostreremo come leggere la ROM, quindi come eseguire il flashing del file esadecimale utilizzando eXtreme Burner. Naturalmente, potresti anche utilizzare i siti Web di fusibili AVR online, ma l'opzione che spiego può essere utilizzata anche quando sei offline, ovunque.

Passaggio 1: impostazioni da effettuare:

Impostazioni da effettuare
Impostazioni da effettuare
Impostazioni da effettuare
Impostazioni da effettuare
Impostazioni da effettuare
Impostazioni da effettuare
Impostazioni da effettuare
Impostazioni da effettuare

Le immagini mostrano le IMPOSTAZIONI da fare prima di iniziare il lavoro. (è una volta sola). Nella voce del sottomenu "Impostazioni hardware", selezioniamo 375Hz perché la maggior parte degli MCU di fabbrica ATMEL sono impostati su Impostazioni predefinite di clock CPU da 1 Mhz sull'oscillatore RC interno. La velocità dell'ISP è un quarto di F_cpu. Questo ci dà una velocità più vicina di 375 Khz, potresti anche andare a una velocità inferiore, non farà molta differenza. Potresti provare a connetterti lasciando questo al suo valore predefinito e emettere un "leggi tutto", se fallisce, potresti venire qui e modificare la velocità, abbassandola.

Perché se non sei in grado di connetterti (il messaggio verrebbe fornito nella finestra del programmatore "impossibile comunicare con il chip, non posso SCK" significa che il segnale di clock dal tuo PC non potrebbe sincronizzarsi con il tuo chip che stai cercando di leggere o programma)., non saresti in grado di modificare la velocità di clock della CPU o alterare la sua velocità e digitare ! Quindi la connessione è alla base di tutto! È come "PRIMO CONTATTO" come si vede nei film di Spielberg. Se ci riesci, puoi sempre aumentare la velocità di clock del tuo MCU programmando i fusibili di conseguenza e in seguito utilizzare una velocità maggiore per la connessione.

Quindi passa attraverso le istantanee delle impostazioni hardware fornite qui, quindi imposta anche il tipo di dispositivo (il chip che stai cercando di programmare, il suo numero di modello).

Passaggio 2: impostazione del tipo di dispositivo

Impostazione del tipo di dispositivo
Impostazione del tipo di dispositivo
Impostazione del tipo di dispositivo
Impostazione del tipo di dispositivo
Impostazione del tipo di dispositivo
Impostazione del tipo di dispositivo

guarda lo screenshot, Pic 1, abbiamo impostato "ATTINY44A". Questo è un microcontrollore a 14 pin senza UART. Ho usato questo di recente, la versione SSU. Se hai installato la versione stock del bruciatore Extreme non vedrai Attiny44A nell'elenco a discesa di selezione del dispositivo, vedrai un Attiny44 che per tutti gli scopi possiamo usare anche per programmare Attiny44A, per introdurre qualsiasi dispositivo non elencato in questo elenco a discesa, leggi il mio altro tutorial "Hacking eXtreme Burner".

Ho usato Atmega88PA-AU anche con eXtreme Burner ma in questo Instructable menzioniamo "Attiny44A" ovunque. Ora come si crea una versione breadboard del minuscolo chip SMD quadrato da 7 mm e lo si prova con i propri programmi? (vedi le foto che indicano la dimensione del chip), per questo, vedi il mio altro istruttore in cui dimostro come realizzare moduli plug-in adatti a Breadboard usando Attiny44A-SSU e ATmega88PA-AU

Una volta imparata questa tecnica, sarai in grado di controllare qualsiasi chip con cui sei curioso di armeggiare, sia che si tratti di un pacchetto SMD o DIL. Ad esempio, ho persino usato un chip SMD fornito in un pacchetto Quad a 32 pin con passo pin da 0,8 mm (Atmega88A) in modo simile!

. Oppure potresti semplicemente usare la versione DIL a 28 pin di Attiny44A per questo Instructable o qualsiasi altro AVR che stai utilizzando al momento per provare eXtreme Burner per la programmazione AVR.

Passaggio 3: emettere un LEGGI TUTTO o LEGGI FLASH

Emetti un LEGGI TUTTO o LEGGI FLASH
Emetti un LEGGI TUTTO o LEGGI FLASH
Emetti un LEGGI TUTTO o LEGGI FLASH
Emetti un LEGGI TUTTO o LEGGI FLASH

Collega il tuo USBasp alla porta USB del tuo laptop, presumo che tu abbia già caricato i driver corretti forniti con il tuo programmatore e che sia stato rilevato correttamente. Dovrebbe apparire sotto "Dispositivi e stampanti" nel menu Start di Windows se lo fosse, non appena è collegato alla porta USB! Collega il tuo chip target sulla sua scheda con il tuo USBasp (i pin SDI//ISP rilevanti usando un cavo a 6 pin o 10 pin devono essere collegati tra i due, vale a dire i pin: MOSI, RESET, MISO, SCK, Vcc, Ground).

Emettere un READ ALL dal MENU di Xtreme Burner. Guarda le foto e i messaggi che abbiamo ottenuto. Inizialmente il tuo schermo mostrava 'FF' per ROM nella prima TAB del masterizzatore, dopo aver letto tutto mostrerà il contenuto effettivo della ROM sul chip. Se hai usato un chip nuovo di fabbrica o un chip cancellato, vedresti FF nei contenuti dopo un "Leggi tutto". Un chip non programmato mostrerà 'FF' nella sua memoria, così come una EEPROM (seconda scheda nel programmatore), l'ultima scheda mostra i FUSIBILI.

Dopo un READ ALL le 3 schede mostrerebbero le informazioni corrette contenute nel chip. Prima non lo sarebbe stato, quindi emetti prima Leggi tutto non appena colleghi tutto.

Passaggio 4: scrivi su Flash (il tuo file esadecimale è stato visualizzato nella ROM sul chip)

Scrivi su Flash (il tuo file esadecimale è stato visualizzato nella ROM sul chip)
Scrivi su Flash (il tuo file esadecimale è stato visualizzato nella ROM sul chip)
Scrivi su Flash (il tuo file esadecimale è stato visualizzato nella ROM sul chip)
Scrivi su Flash (il tuo file esadecimale è stato visualizzato nella ROM sul chip)
Scrivi su Flash (il tuo file esadecimale è stato visualizzato nella ROM sul chip)
Scrivi su Flash (il tuo file esadecimale è stato visualizzato nella ROM sul chip)

Seleziona un file utilizzando la finestra di dialogo Sfoglia che si apre quando fai clic sulla prima icona nella barra MENU in alto. Abbiamo selezionato un file come vedi nella foto. Una volta selezionato il file esadecimale (formato esadecimale intel), la barra dei menu che mostrava "nessun file caricato" è cambiata nel nome del file caricato.

Ora emetti un Flash di scrittura dal menu del software. I messaggi ti mostreranno cosa sta succedendo. vedere le foto.

Dopo una scrittura riuscita, vedrai il "FF" che contrassegna una modifica ROM fresca o cancellata a ciò che contiene il tuo programma o file esadecimale. La dimensione o il numero di byte che il tuo file occupa nella ROM ti è noto anche guardando questa schermata, che mostra il contenuto effettivo della ROM del tuo chip di destinazione che hai appena lampeggiato.

Il passaggio di verifica viene eseguito anche leggendo il chip, come da SETTINGS che abbiamo fatto nel primo passaggio. Questo è visto nei messaggi che anche la verifica ha avuto successo.

Passaggio 5: FUSIBILI: come impostarli in EXtreme Burner

FUSIBILI: come impostarli in EXtreme Burner
FUSIBILI: come impostarli in EXtreme Burner

Quando hai emesso un READ ALL, i fusibili sono stati letti dal chip. Questa è la PRIMA foto mostrata fuses.jpg.

Ora forse devi cambiarli con qualcos'altro. I fusibili sono costituiti da 4 scatole nell'ultima TAB della schermata eXtreme Burner. Vale a dire LOW FUSE BYTE, HIGH FUSE BYTE, EXTENDED FUSE BYTE, LOCK FUSE BYTE e CALIBRATION BYTE. in questo ordine sono mostrati.

Potresti semplicemente usare un calcolatore di fusibili ONLINE e compilarli. come quello su

eleccelerator.com/fusecalc/fusecalc.php?

Oppure potresti usare il masterizzatore eXtreme per farlo per te. offline in qualsiasi momento: seleziona dall'elenco a discesa che appare quando fai clic sul pulsante DETTAGLI che si trova sotto ogni tipo di byte fusibile. Basta fare doppio clic su qualsiasi riga nella schermata DETTAGLI e guardarla cambiare da SET a CLEARED e alternare il suo stato con il clic del mouse su ciascuna riga. Il Fuse Byte nella casella sopra cambierebbe di conseguenza.

Se ti stai chiedendo "cosa diavolo sono i fusibili" e "cosa fanno"? Leggi questo eccellente articolo:

www.instructables.com/id/Avr-fuse-basics-Running-an-avr-with-an-external-cl/

Passaggio 6: impostazione dei fusibili utilizzando il calcolatore dei fusibili del bruciatore EXtreme

Impostazione dei fusibili utilizzando il calcolatore dei fusibili del bruciatore EXtreme
Impostazione dei fusibili utilizzando il calcolatore dei fusibili del bruciatore EXtreme
Impostazione dei fusibili utilizzando il calcolatore dei fusibili del bruciatore EXtreme
Impostazione dei fusibili utilizzando il calcolatore dei fusibili del bruciatore EXtreme
Impostazione dei fusibili utilizzando il calcolatore dei fusibili del bruciatore EXtreme
Impostazione dei fusibili utilizzando il calcolatore dei fusibili del bruciatore EXtreme

È possibile visualizzare la schermata dei dettagli che appare per ciascuno dei byte del fusibile (BASSO, ALTO, ESTENUTO, BLOCCATO e Calibrazione). Il byte di calibrazione dovrebbe essere lasciato invariato in quanto mostra il byte di dati di calibrazione nell'AVR che si applica all'oscillatore RC interno. Il byte LOCK è solitamente solo FF, (non discusso nelle foto sopra) poiché non bloccheresti la Flash o l'EEPROM durante la fase di apprendimento. Dovresti cambiare solo i byte LOW, HIGH ed EXTENDED. Stai attento !

Se cambi il bit SPIEN su 1 (lo stato non programmato è 1 nei microcontrollori AVR) non sarai in grado di comunicare con il tuo chip utilizzando USBASP o qualsiasi programmatore! Lo stato predefinito è anche mostrato nella schermata per ogni bit del fusibile. Questo avverte che l'impostazione predefinita SPIEN è sempre 0 (stato programmato) per consentire di utilizzare la modalità SPI per la programmazione ISP. Il bit di debug o DW viene sempre lasciato 1 (non programmato) quando SPIEN è impostato su 0. Questo è anche il suo stato predefinito. Inoltre, nei bit del fusibile esteso "Autoprogrammazione abilitata" dovrebbe essere "1" (non programmato) se si utilizza l'USB-ASP per programmare il chip di destinazione (non utilizzando la ROM del bootloader come in ARDUINO).

È possibile modificare i bit CLOCK (3 in numero) per selezionare RC interno o cristallo esterno. Normalmente lo lascio per RC interno che ti consente di ottenere 2 pin extra che liberare il cristallo esterno comporta da utilizzare come pin PORT per i tuoi progetti AVR. Di solito il cristallo esterno è necessario quando hai bisogno di tempistiche di alta precisione nel tuo progetto. Per gli studenti RC interno è sufficiente.

Di solito, una volta che ti sei deciso su una combinazione di fusibili, non la cambieresti. Sarebbe una tantum. Faresti solo il flashing della ROM o talvolta anche della EEPROM. Per il flashing, il file.eep separato della EEPROM viene generato dal tuo studio WINAVR / ATMEL se il tuo programma utilizza la EEPROM per memorizzare i dati. Altrimenti la EEPROM rimane inutilizzata, riempita con i dati 'FF' che mostrano 'NO DATA state' della EEPROM.

Passaggio 7: valore finale dei bit dei fusibili

Valore finale dei bit dei fusibili
Valore finale dei bit dei fusibili

Dopo aver impostato tutti i bit Fuse e chiuso le caselle DETTAGLI che hai utilizzato, puoi vedere il valore dei bit Fuse come calcolato dal programma (vedi foto). Non resta che emettere un "Write Fuses" tramite il menu. E guardare i messaggi che segnalano una scrittura riuscita. Successivamente, potresti anche emettere un READ ALL dal menu e verificare se i fusibili letti nell'ultima TAB della schermata del bruciatore coincidono con ciò che volevi scrivere sul chip. (Verifica fusibile).

Noterai che all'inizio di questo Instructable quando abbiamo fatto un READ FUSES, lo schermo mostra gli stessi valori di FUSE che vediamo qui! Questo perché questi sono i fusibili che uso spesso e li cambio raramente una volta che li ho impostati nella mia MCU, a meno che non cambi la frequenza da 1 Mhz a 4 Mhz per alcuni progetti. L'AVR può essere impostato su un massimo di 20 Mhz (alcuni chip solo fino a 16 Mhz). La frequenza che imposti per F_cpu dipende anche dalla tensione che fornisci al chip! Ad esempio, se il tuo chip funziona da 1,8 V di Vcc fino a 5,5 V di Vcc (fare riferimento alla scheda tecnica) non ti aspetteresti di far funzionare il tuo chip a 20 mhz se gli fornissi solo 1,8 V! ti aspetti troppo da esso! Una tabella nella scheda tecnica ti dice a quale voltaggio la frequenza raggiunge il massimo a quale cifra. Maggiore è la frequenza di funzionamento del chip, maggiore è il calore e la potenza che consuma. Pensa alla Frequenza come al battito del cuore di un animale. Un colibrì con un'alta frequenza di battito cardiaco avrebbe un consumo energetico più elevato al minuto rispetto a una balena o un elefante con un battito cardiaco molto più basso! Ma poi può fare molto di più in un tempo più breve. L'MCU è proprio così.

Passaggio 8: fine

Ora hai completato tutti i passaggi nel masterizzatore eXtreme, hai letto la ROM di un chip, hai aperto un file HEX e lo hai flashato sul chip e verificato che il flash era OK, hai anche imparato come impostare i fusibili e flasharli sul chip.

In caso di domande, sarò lieto di rispondere o modificare il tutorial per renderlo più chiaro.

Per alcuni chip potresti scoprire che manca la voce nell'elenco a discesa di selezione dei chip nel menu. Oppure potresti riscontrare errori di scrittura e verificare errori. In questi casi, leggi il mio altro Instructable "Hacking eXtreme Burner" per risolvere il problema.

Buona programmazione.

Consigliato: