Innholdsfortegnelse:

VUSBTiny AVR SPI programmerer: 3 trinn
VUSBTiny AVR SPI programmerer: 3 trinn

Video: VUSBTiny AVR SPI programmerer: 3 trinn

Video: VUSBTiny AVR SPI programmerer: 3 trinn
Video: V-USB on an ATmega328! - V-USB and HID Explained 2024, November
Anonim
VUSBTiny AVR SPI programmerer
VUSBTiny AVR SPI programmerer

Etter å ha laget en usbtiny isp programmerer og brukt den i 6 måneder, så jeg på å lage en til for å bære rundt. Jeg liker det enkle i usbtiny isp -design, men vil gjerne gjøre det enda mindre og ta færre deler. en ting i det originale designet jeg vil endre er å eliminere bruken av klokkekrystall. en løsning jeg fant er at v-usb-drivere støtter 16,5 Mhz intern oscillator på attiny25/45/85 enheter. så jeg starter opp dette prosjektet for å få usbtiny isp bruker v-usb for usb-kommunikasjon. de umiddelbare fordelene er at det sparer plass og har færre komponentteller (ikke flere krystaller).usbtiny-beskrivelse fra https://www.xs4all.nl/~dicks/avr/usbtiny/ USBtiny er en programvareimplementering av USB-lavhastigheten protokoll for Atmel ATtiny mikrokontrollere. Selvfølgelig vil det også fungere på ATmega -serien. Programvaren er skrevet for en AVR klokket til 12 MHz. Ved denne frekvensen tar hver bit på USB -bussen 8 klokkesykluser, og med mye lureri er det mulig å dekode og kode USB -bølgeformene med programvare. USB -driveren trenger omtrent 1250 til 1350 byte flash -plass (unntatt valgfrie identifikasjonsstrenger), avhengig av konfigurasjon og kompilatorversjon, og 46 byte RAM (unntatt stakkplass). C-grensesnittet består av 3 til 5 funksjoner, avhengig av konfigurasjonen. Vusb-beskrivelse fra https://www.obdev.at/products/vusb/ V-USB er en programvare-bare implementering av en lavhastighets USB-enhet for Atmel's AVR -mikrokontrollere, noe som gjør det mulig å bygge USB -maskinvare med nesten hvilken som helst AVR -mikrokontroller, som ikke krever noen ekstra brikke. Video om konstruksjon og bruk

Trinn 1: Funksjoner og deler

Funksjoner og deler
Funksjoner og deler

* programmeringslogikk fra usbtiny isp, moden avr-dude-støtte * liten fotavtrykk * minimale komponenter * driver målenheten, merk at io-linjene til mål-mcus ikke er beskyttet. du kan legge 1k-2k motstander til SCK og MOSI og beskytte mot mulige feil tilkoblingsreferanser basert på verkene som finnes på v-usb fra rammeverket https://www.obdev.at/vusb/ usbtiny isp https://www.xs4all. nl/~ dicks/avr/usbtiny/deleliste * attiny45/85 (85 er lettere å få tak i) * 3,6v zenerdioder (1n747, BZX79,.. unngå 1W -typer) * 68ohm motstand x 2 * 1,5K motstand * mini breadboard 170 tiepoints * usb -kabel (dollar shop usb -skriverkabel er fin) * 1k/2k motstander for io lines beskyttelse (valgfritt) verktøy kreves * en fungerende avr programmerer (ja, det er en fangst22, vi trenger en for å lage en) * arbeider avr programmeringsmiljø

Trinn 2: Brettbrettoppsett, skjematisk og konstruksjon

Brødbrettoppsett, skjematisk og konstruksjon
Brødbrettoppsett, skjematisk og konstruksjon
Brødbrettoppsett, skjematisk og konstruksjon
Brødbrettoppsett, skjematisk og konstruksjon

konstruksjon

* følg brødbrettoppsettet, det er ikke det som kan være komponenter, 3 motstander, 2 dioder, 1 hette, pluss en 8 -pinners mcu. * få en dollar -butikk usb -skriverkabel kuttet av skriverenden, det vil være 4 synlige ledninger, sikre og gjøre dem til en 4 -pinners hannhodet, vi bruker den til å koble til brødbrettet. se skjema for layout og pin -tildeling (J1). * se opp for diodepolaritet.

bygge og blinke prosjektet

prosjektet ble bygget i en linux ubuntu lucid-boks med avr-gcc verktøykjede. det antas at du allerede har et slikt miljø, eller du kan finne ut fra internett hvordan du konfigurerer et. kildekoder er gnu gpl v2 lisensiert fra arv.

kildekoden følger en konvensjon som er anbefalt av v-usb, du kan laste ned kildepakken vusbtiny.tgz og ta ut av tarmen til en prosjektkatalog. i kildekatalogen din, er det en main.c, som er min versjon av endret usbtiny programmerer. og en usbdrv-undermappe, som inneholder v-usb-laget. Vær oppmerksom på lisensvilkårene fra de to ovennevnte prosjektene når du bygger dette. min kilde på programmeringslogikken er basert på Dick Streefland -versjonen og ikke ladyada -versjonen (selv om de er nesten de samme).

for de som ikke har en build-for-kjede, kan du bruke følgende binære

klikk for å laste ned vusbtiny.hex

og bruk avrdude til å blinke fastvare

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

(hvis enheten er en liten85, bytt -p t45 m/ -p t85)

kilden kan lastes ned her klikk for å laste ned vusbtiny.tgz

ta opp kildepakken i arbeidskatalogen

tar -zxvf vusbtiny.tgz

* gjør cd vsubtiny, for å bytte til vusbtiny working directory * ajust makefile for target device ifolge brikken du skal bruke. dvs. PROGRAMMER_MCU = t45 eller t85 * gjør en make * legg til din favoritt ISP -programmerer * endre makefile og endre avrdude -parametrene om nødvendig. aksjen man antar USBTiny programmerer. dvs. AVRDUDE_PROGRAMMERID = usbtiny * flash firmware via make install

etter å ha blinket fastvare, må vi sette sikringen riktig, vi bruker pin 1 reset som io i dette prosjektet

* ppl-klokke brukt som kreves av v-usb-lag for usb-timing * tilbakestillingsnål deaktivert da vi må bruke den som io

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

denne innstillingen deaktiverer videre programmering via 5V SPI ettersom vi trenger RESET -pin (pin1) for io. du trenger tilgang til en HVSP -programmerer for å gjenopprette sikringen.

Trinn 3: Bruk og applikasjon

Bruk og applikasjon
Bruk og applikasjon
Bruk og applikasjon
Bruk og applikasjon
Bruk og applikasjon
Bruk og applikasjon

blinker direkte på brødbrettet

Hvis du bruker vusbtiny til å blinke 8 -pinners AVR -enheter, kan du bare trykke på målenheten på toppen av programmeringsenheten. programmereren hadde blitt designet slik at programmeringsnålene samsvarer med mål. Det er imidlertid et triks, du må isolere pin 2 og 3 på programmereren mcu, da de er USB D+ og D-pins som kobles til PCen. Jeg bruker et snitt av tape for å oppnå dette, du kan se det på bildene. Vis nedenfor er en liten 13v "ridning" på tiny45, klar til å motta fastvare.

ISP blinker via jumper

for å programmere en målkrets via ISP (programmering i systemet), trenger du en ISP-kabel. her bruker jeg ikke standard 2x3 eller 2x5 pin hoder. i stedet bruker jeg en 1x6 jumper som er mer brødbrettvennlig, du kan lage 2x3 eller 2x5 pin header ved å kartlegge dem til J2 som vist på brødbrettoppsettet og skjemaene. bildet nedenfor viser en liten2313 klar til å bli blinket via Internett -leverandøren.

feilsøking

* kan ikke blinke fastvaren? sjekk den originale programmereren din, kanskje du må justere timingen via -B flagg i avrdude. Prøv å lese chip 1st, kan være en dårlig sikring, det kan være at chipen din trenger et eksternt klokkesignal. Du må kanskje fikse brikken din tilbake til standard 1. * sjekk tilkoblinger * hvis du bruker forskjellige io -pinner, sjekk kode og tilkoblinger * du kan erstatte zener -dioder med 500mw, 400mw -typer * du kan prøve å redusere R3 -verdien til 1,2K eller mindre * det er mer sannsynlig at du får avrdude -timingproblemer, prøv -B flag av avdude, har en kortere USB -kabel, alt hjelper

Anbefalt: