Schemi e materiali. Programmatore USB in miniatura per microcontrollori AVR
Una volta deciso di assemblare un programmatore in miniatura, ho ridisegnato il circuito per il microcontrollore Atmega8 nell'alloggiamento TQFP32(la piedinatura del microcontrollore è diversa dalla piedinatura nel pacchetto DIP):
Il ponticello J1 viene utilizzato se è necessario eseguire il flashing del microcontrollore frequenza dell'orologio 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 ad una 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 da qui è prelevato direttamente; porta USB computer, quindi è necessario 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 Sistema Windows 7 e non ci sono stati problemi. Quando ti connetti al computer per la prima volta, verrà visualizzato un messaggio che indica che è stato rilevato un nuovo dispositivo, chiedendoti di installare un driver. Seleziona l'installazione dalla posizione specificata:
Selezionare la cartella in cui si trova la legna da ardere e fare clic su Avanti
Apparirà immediatamente una finestra con l'avviso che il driver in fase di installazione non dispone di firma digitale per i software di piccole dimensioni:
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. È vero, non sono riuscito a trovare un uso pratico per questi pulsanti. Il pulsante Default è progettato per registrare la configurazione del fusibile standard, quella con cui arrivano 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.
Scarica il file PCBin SprintLayout puoi seguire questo link
USBasp è un semplice programmatore USB in-circuit per microcontrollori Atmel AVR. Il programmatore è costruito sul microcontrollore ATMega88 (o ATMega8) e contiene un minimo di parti. Il programmatore utilizza il proprio driver USB, no USB speciale non sono necessari controller.
Caratteristiche del programmatore:
- funziona su qualsiasi piattaforma: Windows, Linux e Mac OS X
- Non sono necessari componenti speciali o SMD
- velocità di programmazione fino a 5 kB/sec
- Il ponticello SCK consente di programmare i controller a bassa velocità (< 1.5МГц)
- nei piani: interfaccia seriale (ad esempio per il debug)
Circuito programmatore
Il circuito è progettato per programmare solo cristalli da 5V. In altri casi, i livelli devono essere convertiti!
Caricamento del firmware
Perché Poiché il circuito del programmatore utilizza un microcontrollore, deve prima essere flashato. Per fare ciò, collegare un altro programmatore funzionante e installare il ponticello J2 per attivare la funzione di aggiornamento del firmware.
Aggiorna il programmatore utilizzando il firmware: "bin/firmware/usbasp.atmega88.xxxx-xx-xx.hex" o "bin/firmware/usbasp.atmega8.xxxx-xx-xx.hex"
Sarà necessario installare dei fusibili per collegare un quarzo esterno
# BERSAGLIO=atmega8 HFUSE=0xc9 LFUSE=0xef
# TARGET=atmega48 HFUSE=0xdd LFUSE=0xff
# TARGET=atmega88 HFUSE=0xdd LFUSE=0xff
Impostazioni dei ponticelli
J1 - alimentazione (da USB, o fonte esterna). Stai attento, perché... il circuito non contiene alcuna protezione da cortocircuito.
J2 - aggiornamento del firmware (impossibile aggiornarsi da solo!). Il ponticello installato consente di programmare il controller del programmatore con un altro programmatore funzionante.
J3 - se il microcontrollore programmabile è a bassa velocità<1.5 МГц, то необходимо установить данный джампер. Тогда SCK уменьшится с 375 кГц до примерно 8 кГц.
Installazione dei driver per Windows
Collegare il programmatore USBasp all'USB. Windows troverà il dispositivo e ti chiederà di specificare il driver, indirizzalo alla cartella "bin/win-driver". Windows installerà il driver.
Ora puoi eseguire avrdude, ad esempio:
1. Accedi alla modalità terminale, MK: AT90S2313: avrdude -c usbasp -p at90s2313 -t
2. Scrivi main.hex nella memoria flash dell'ATmega8 MK: avrdude -c usbasp -p atmega8 -U flash:w:main.hex
Costruire i propri sorgenti (per Linux)
Compilazione del firmware:
1. Installa la toolchain GNU per i microcontrollori AVR (pacchetti avr-gcc, avr-libc)
2. Accedere alla directory/firmware
3. Esegui il comando "make main.hex"
4. Flash "main.hex" ATMega(4)8. Ad esempio utilizzando uisp o avrdude (use
Makefile con l'opzione "make flash"). Per eseguire il flashing del firmware, installare il ponticello J2 e collegare USBasp al programmatore funzionante.
È inoltre necessario installare i fusibili per funzionare da un quarzo esterno (usa Makefile
con l'opzione "crea fusibili").
Compilazione Avrdude:
Il software AVRDUDE è supportato dal programmatore USBasp a partire dalla versione 5.2.
1. Installa il pacchetto libusb: http://libusb.sourceforge.net/
2. Scarica l'ultima versione di avrdude: http://download.savannah.gnu.org/releases/avrdude/
3. cd avrdude-X.X.X
4. Configura:
./bootstrap
./configura
5. Compilazione:
Fare
effettuare l'installazione
Foto del programmatore USBasp
Programmi per lavorare con il programmatore
AVRDUDE - USBasp supportato dalla versione 5.2
BASCOM-AVR - USBasp supportato a partire dalla versione 1.11.9.6
Programmatore AVR Khazama: applicazione GUI Windows XP/Vista per USBasp e avrdude
Con lo sviluppo della tecnologia informatica, ogni volta ci sono sempre meno computer dotati di porte COM e LPT. Ciò, a sua volta, causa difficoltà, soprattutto per i radioamatori, legate all'abbinamento degli strumenti di programmazione del microcontrollore con un personal computer.
Questo articolo descrive un programmatore USB per microcontrollori AVR, che puoi assemblare da solo. È costruito su un microcontrollore Atmega8 ed è in grado di funzionare dal connettore USB di un computer. Questo programmatore è compatibile con STK500 v2.
Descrizione del programmatore USB
Il programmatore USB è costruito su una scheda in fibra di vetro a lato singolo. Sulla scheda sono presenti 2 ponticelli: uno si trova sotto il connettore SPI, il secondo si trova vicino allo stesso connettore.
Dopo che tutte le parti sono sigillate, è necessario eseguire il flashing del microcontrollore Atmega8 con il firmware fornito alla fine dell'articolo. I fusibili che devono essere impostati durante la programmazione del microcontrollore Atmega8 dovrebbero assomigliare a questi:
- SUT1 = 0
- STIVALIZ1 = 0
- STIVALIZ0 = 0
- CKOPT = 0
- SPIEN = 0
Va ricordato che in alcuni programmi le impostazioni dei fusibili sono impostate in direzione opposta a questa. Ad esempio, nel programma CodeVisionAVR è necessario selezionare le caselle accanto ai fusibili sopra menzionati e nel programma PonyProg viceversa.
Programmazione Atmega8 tramite porta LPT di un computer
Il modo più veloce ed economico per programmare Atmega8 è utilizzare un programmatore LPT per AVR. Un diagramma simile è mostrato di seguito.
Il microcontrollore è alimentato da un semplice regolatore di tensione 78L05. È possibile utilizzare il programma UniProf come shell di programmazione.
Quando si accende il programma per la prima volta e quando il controller non è collegato, premendo il pulsante “LPTpins”, è necessario configurare i pin della porta LPT come segue:
All'avvio UniProf determina automaticamente il tipo di microcontrollore. Carichiamo il firmware Atmega8_USB_prog.hex nella memoria UniProf e rifiutiamo la connessione del file EEPROM.
Impostiamo i fusibili come segue (per il programma UniProF) premendo il pulsante “FUSE”:
Per ricordare le impostazioni, premere tutti e tre i pulsanti "Scrivi". Quindi, facendo clic su "Cancella", cancelliamo prima la memoria del microcontrollore in fase di flashing. Successivamente, fare clic su "Prog" e attendere il completamento del firmware.
Configurazione di un programmatore USB
Dopo che il nostro microcontrollore è stato flashato, deve essere installato sulla scheda del programmatore USB. Successivamente, colleghiamo il programmatore alla porta USB del computer, ma non forniamo ancora alimentazione.
Impostazione della porta:
Configurazione del terminale:
Impostazione ASCII:
Ora, dopo aver completato tutte le procedure, forniamo alimentazione al programmatore USB. Il LED HL1 dovrebbe lampeggiare 6 volte e poi restare acceso.
Per verificare la connessione tra il programmatore USB e il computer, premere 2 volte il tasto "Invio" nel programma HyperTerminal. Se è tutto ok dovremmo vedere la seguente immagine:
In caso contrario verificare nuovamente l'installazione, in particolare la linea TxD.
Successivamente entriamo nella versione 2.10 del programmatore, poiché senza di essa il programmatore non funzionerà con i programmi di “livello superiore”. Per fare ciò, inserire “2” e premere “Invio”, inserire “a” (inglese) e premere “Invio”.
Il programmatore USB è in grado di riconoscere la connessione di un microcontrollore programmabile. Ciò avviene sotto forma di monitoraggio del “pull-up” del segnale di ripristino alla fonte di alimentazione. Questa modalità viene attivata e disattivata come segue:
- “0”, “Invio”: la modalità è disabilitata.
- “1”, “Invio”: la modalità è abilitata.
Cambio velocità di programmazione (1MHz):
- “0”, “Enter” – velocità massima.
- “1”, “Enter” – velocità ridotta.
Questo completa il lavoro preparatorio, ora puoi provare a eseguire il flashing di alcuni microcontrollori.
(download: 1.203)
C'era una volta, un paio di anni fa, ho guardato ancora una volta il file di una rivista di ingegneria radiofonica e ho pensato: non è ora di padroneggiare i microcontrollori? Non ci sono stati problemi con questo, c'è molta letteratura, ci sono abbastanza esempi. Ho studiato l'hardware e ho scritto il mio primo PROGRAMMA. Quindi è iniziata la ricerca di qualcosa per inserire questo programma nel controller, cioè nel programmatore. Ciò che serviva era un circuito semplice che potesse essere assemblato con ciò che era a portata di mano e affidabile, senza difetti, per così dire. Dopo una lunga ricerca, la scelta è caduta sul circuito del programmatore della rivista "RADIO" n. 10 2007. Arte. 31. Non descriverò questo schema; per chi fosse interessato, c'è l'articolo originale in archivio. Dico solo che lo schema ha funzionato perfettamente, ho cucito tutto senza problemi, ma per qualche motivo a volte il MAX232 si è guastato (ho sostituito 3 pezzi, forse ne ho ricevuti di difettosi). Ho regalato quel programmatore ad un collega e ho deciso di costruirmene uno uguale per me, ma non avevo un altro stabilizzatore controllato K78R12C, quindi è ricominciata la ricerca di un sostituto... Di conseguenza è nato questo circuito, questo è il risultato dell’“incrocio” di un circuito del magazzino e di un programmatore proprietario SI-PROG:Il MAX232 è stato sostituito con un ST232 più veloce, lo stabilizzatore controllato è stato sostituito con un normale 7812 e un interruttore a transistor dopo di esso, transistor - BC547, tutte le altre parti - secondo le raccomandazioni dell'articolo originale. Ho anche aggiunto una scheda plug-in separata con prese per diversi tipi di controller (poiché utilizzo principalmente RIC, la scheda è solo per loro per ora, e se devi flashare un AVR, allora con cavi :-)). Tutto questo è montato su questa scheda:
E questa è una scheda sostitutiva per PIC e chip di memoria:
Rimuovere tutti i contatti non utilizzati dai pannelli in modo da non praticare molti fori aggiuntivi. Ecco una foto della scheda assemblata:
Il programmatore è stato assemblato in un case polacco, denominato Z50, e la scheda è stata progettata per questo, di seguito sono riportate alcune foto:
Nella foto puoi vedere il trasformatore di alimentazione nella custodia, in seguito l'ho buttato via, poiché si è rivelato piuttosto debole (ho realizzato la retroilluminazione a LED del pannello frontale con LED super luminosi e il trasformatore non era in grado di occupatene :-). Ora viene utilizzato un alimentatore esterno da 15 V, con una corrente fino a 1 A. Il programmatore funziona con i programmi PonyProg, Si-prog, WinPic800. Utilizzando il programma PonyProg per il controllo, selezionare il programmatore SI Prog I/O nella finestra corrispondente e impostare l'inversione del segnale secondo la Tabella 1. Per i programmi Si-Prog e WinPic 800, selezionare il programmatore JDM e impostare l'inversione del segnale; secondo le tabelle 2 e 3.