Sommario:

Programmatore VUSBTiny AVR SPI: 3 passaggi
Programmatore VUSBTiny AVR SPI: 3 passaggi

Video: Programmatore VUSBTiny AVR SPI: 3 passaggi

Video: Programmatore VUSBTiny AVR SPI: 3 passaggi
Video: USBtinyISP AVR ISP программатор 2024, Novembre
Anonim
Programmatore VUSB Tiny AVR SPI
Programmatore VUSB Tiny AVR SPI

dopo aver creato un programmatore usbtiny isp e averlo usato per 6 mesi, stavo cercando di crearne un altro da portare in giro. mi piace la semplicità del design usbtiny isp ma vorrei renderlo ancora più piccolo e prendere meno parti. una cosa nel design originale che voglio cambiare è eliminare l'uso del cristallo dell'orologio. una soluzione che ho trovato è che i driver v-usb supportano l'oscillatore interno da 16,5 Mhz sui dispositivi attiny25/45/85. quindi inizio questo progetto per fare in modo che usbtiny ISP utilizzi v-usb per la comunicazione USB. i vantaggi immediati sono che consente di risparmiare spazio e di avere meno componenti (non più cristalli). descrizione usbtiny da https://www.xs4all.nl/~dicks/avr/usbtiny/ USBtiny è un'implementazione software dell'USB a bassa velocità protocollo per i microcontrollori Atmel ATtiny. Ovviamente funzionerà anche sulla serie ATmega. Il software è scritto per un AVR con clock a 12 MHz. A questa frequenza, ogni bit sul bus USB richiede 8 cicli di clock e, con molti trucchi, è possibile decodificare e codificare le forme d'onda USB tramite software. Il driver USB richiede circa 1250-1350 byte di spazio flash (escluse le stringhe di identificazione opzionali), a seconda della configurazione e della versione del compilatore, e 46 byte di RAM (escluso lo spazio dello stack). L'interfaccia C è composta da 3 a 5 funzioni, a seconda della descrizione di configuration.vusb da https://www.obdev.at/products/vusb/ V-USB è un'implementazione solo software di un dispositivo USB a bassa velocità per Atmel's Microcontrollori AVR, che consentono di creare hardware USB con quasi tutti i microcontrollori AVR, senza richiedere alcun chip.video aggiuntivo sulla costruzione e l'utilizzo

Passaggio 1: caratteristiche e parti

Caratteristiche e parti
Caratteristiche e parti

* logica di programmazione da usbtiny isp, supporto maturo avr-dude * ingombro ridotto * componenti minimi * alimenta il dispositivo di destinazione nota che le linee io per l'mcus di destinazione non sono protette. è possibile aggiungere resistori da 1k-2k a SCK e MOSI e proteggere da eventuali collegamenti errati riferimenti basati sui lavori trovati su v-usb dal framework https://www.obdev.at/vusb/usbtiny isp https://www.xs4all. nl/~dicks/avr/usbtiny/parts list * attiny45/85 (85 è più facile da trovare) * diodi zener 3.6v (tipi 1n747, BZX79,..evitare 1W) * resistore 68ohm x 2 * resistore 1.5K * mini breadboard 170 punti di collegamento * cavo usb (il cavo della stampante usb del negozio di dollari va bene) * resistenze 1k/2k per la protezione delle linee io (opzionali) strumenti necessari * un programmatore avr funzionante (sì, è un catch22, ne abbiamo bisogno per crearne uno) * ambiente di programmazione avr funzionante

Passaggio 2: layout, schema e costruzione della breadboard

Layout breadboard, schema e costruzione
Layout breadboard, schema e costruzione
Layout breadboard, schema e costruzione
Layout breadboard, schema e costruzione

costruzione

* seguire il layout della breadboard, non ci sono componenti, 3 resistori, 2 diodi, 1 cappuccio, più un mcu a 8 pin. * ottenere un cavo della stampante USB da un negozio di dollari tagliato dall'estremità della stampante, ci saranno 4 fili esposti, fissarli e trasformarli in un'intestazione maschio a 4 pin, lo useremo per collegarci alla breadboard. consultare lo schema per il layout e l'assegnazione dei pin (J1). * attenzione alla polarità del diodo.

costruire e far lampeggiare il progetto

il progetto è stato costruito in una scatola linux ubuntu lucid con toolchain avr-gcc. si presume che tu abbia già un ambiente del genere, oppure puoi scoprire da Internet come configurarne uno. i codici sorgente sono gnu gpl v2 concessi in licenza dall'ereditarietà.

il codice sorgente segue una convenzione consigliata da v-usb, è possibile scaricare il pacchetto sorgente vusbtiny.tgz e decomprimerlo in una directory del progetto. all'interno della tua directory di origine, c'è un main.c, che è la mia versione del programmatore usbtiny modificato. e una sottodirectory usbdrv, che contiene il livello v-usb. si prega di osservare il termine di licenza dei due progetti precedenti durante la creazione di questo. la mia fonte sulla logica del programmatore si basa sulla versione di Dick Streefland e non sulla versione ladyada (sebbene siano quasi uguali).

per coloro che non hanno una build too-chain, puoi usare il seguente binario

clicca per scaricare vusbtiny.hex

e usa avrdude per flashare il firmware

avrdude -c usbtiny -p t45 -e -V -U flash:w:usbtiny.hex

(se il tuo dispositivo è un tiny85, sostituisci -p t45 w/ -p t85)

la fonte può essere scaricata qui fare clic per scaricare vusbtiny.tgz

decomprimi il pacchetto sorgente nella tua directory di lavoro

tar -zxvf vusbtiny.tgz

* fai cd vsubtiny, per passare alla directory di lavoro vusbtiny * ajust makefile per il dispositivo di destinazione in base al chip che utilizzerai. cioè PROGRAMMER_MCU=t45 o t85 * fai un make * allega il tuo programmatore ISP preferito * modifica makefile e cambia i tuoi parametri avrdude se necessario. quello stock presuppone il programmatore USBTiny. cioè AVRDUDE_PROGRAMMERID=usbtiny * firmware flash tramite make install

dopo aver lampeggiato il firmware, dobbiamo impostare correttamente il fusibile, stiamo usando il reset del pin 1 come io in questo progetto

* orologio ppl utilizzato come richiesto dal livello v-usb per la temporizzazione USB * reset pin disabilitato in quanto dobbiamo usarlo come io

avrdude -c usbtiny -p t45 -V -U lfuse:w:0xe1:m -U hfuse:w:0x5d:m -U efuse:w:0xff:m

questa impostazione disabilita l'ulteriore programmazione tramite 5V SPI poiché abbiamo bisogno del pin RESET (pin1) per io. sarà necessario accedere a un programmatore HVSP per recuperare il fusibile.

Passaggio 3: utilizzo e applicazione

Utilizzo e applicazione
Utilizzo e applicazione
Utilizzo e applicazione
Utilizzo e applicazione
Utilizzo e applicazione
Utilizzo e applicazione

lampeggio diretto su breadboard

se stai usando vusbtiny per far lampeggiare i dispositivi AVR a 8 pin, puoi semplicemente premere il tuo dispositivo di destinazione sopra il dispositivo del programmatore. il programmatore è stato progettato in modo che i pin di programmazione corrispondano ai target. c'è un trucco però, dovrai isolare i pin 2 e 3 sull'mcu del programmatore, poiché sono i pin USB D+ e D- che si collegano al PC. io uso un pezzo di scotch per ottenere questo risultato, puoi vederlo nelle foto. mostra sotto è un tiny13v "in sella" sul tiny45, pronto a ricevere il firmware.

ISP lampeggiante tramite jumper

per programmare un circuito di destinazione tramite ISP (programmazione interna al sistema), è necessario un cavo ISP. qui non sto usando le intestazioni pin standard 2x3 o 2x5. invece sto usando un ponticello 1x6 che è più adatto alla breadboard, puoi creare un'intestazione pin 2x3 o 2x5 mappandoli su J2 come mostrato sul layout e sugli schemi della breadboard. la foto seguente mostra un tiny2313 pronto per essere flashato tramite ISP.

Risoluzione dei problemi

* non è possibile eseguire il flashing del firmware? controlla il tuo programmatore originale, potrebbe essere necessario regolare i tempi tramite il flag -B in avrdude. prova a leggere il primo chip, potrebbe essere un fusibile difettoso, potrebbe essere che il tuo chip abbia bisogno di un segnale di clock esterno. potrebbe essere necessario ripristinare il chip al primo valore predefinito. * controlla le connessioni * se usi pin io diversi, controlla il codice e le connessioni * puoi sostituire i diodi zener con i tipi da 500 mw, 400 mw * potresti provare a ridurre il valore R3 a 1.2K o meno * è più probabile che tu abbia problemi di temporizzazione avrdude, prova -B bandiera di avrdude, avere un cavo USB più corto aiuta tutto

Consigliato: