Schemi e materiali. Programmatore USB in miniatura per microcontrollori AVR

Proprio come un teatro inizia con una gruccia, così la programmazione dei microcontrollori inizia con la scelta di un buon programmatore. Da quando sto iniziando a padroneggiare i microcontrollori dell'azienda ATMEL, quindi 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 sugli sviluppi di radioamatori esperti, si è deciso di mettere insieme un programmatore ben collaudato USBASP , il cui cervello è un microcontrolloreAtmega8 (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.

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 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:


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 vengono forniti i microcontrollori dalla fabbrica (solitamente 1 MHz dall'RC interno).
In generale, durante l'intero periodo di utilizzo di 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 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 foglio singolo. Sulla scheda sono presenti 2 ponticelli: uno si trova sotto il connettore SPI, il secondo ponticello 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

È importante ricordare che in alcuni programmi le impostazioni dei fusibili sono l'opposto. 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.

Alla prima accensione del programma 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 in; conformità con le tabelle 2 e 3.

Pubblicazioni sull'argomento