Hvordan programmere en AVR (arduino) med en annen Arduino: 7 trinn
Hvordan programmere en AVR (arduino) med en annen Arduino: 7 trinn

Video: Hvordan programmere en AVR (arduino) med en annen Arduino: 7 trinn

Video: Hvordan programmere en AVR (arduino) med en annen Arduino: 7 trinn
Video: LDmicro 21: настройка режима C и Arduino Mega (программирование микроконтроллера с помощью LDmicro) 2025, Januar
Anonim

Denne instruksjonene er nyttige hvis:

* du har arduinoen din med atmega168, og du har kjøpt en atmega328 hos din lokale elektronikkbutikk. Den har ikke en arduino bootloader * du vil lage et prosjekt som ikke bruker arduino - bare en vanlig AVR -brikke (som USBTinyISP) - du har en ren attiny2313/attiny48 etc som du vil brenne fastvare på. Normalt må du ha en ISP (In System Programmer) som USBTinyISP for å programmere den nye brikken. Etter å ha arduinoen kan du lære den å være en programmerer takket være et flott arbeid utført av Randall Bohn. Han laget Mega -ISP - en arduino -skisse som fungerer som en programmerer.

Trinn 1: Hva trenger du?

* en fungerende Arduino (eller en klon - jeg bruker BBB - BareBonesBoard og en RBBB - RealBareBonesBoard av ModernDevices) * en brikke du vil programmere (testet med atmega8, atmega168, atmega368, attiny2313, attiny13) * et brødbrett eller et brett med ISP -topptekst * 3 lysdioder + 3 motstander * brødbrettledninger

Trinn 2: Lag Mega-isp-programmereren på et brødbrett

Det er to måter å koble Arduino til å programmere en brikke.

Du kan koble avr -brikken til et brødbrett og koble 5v og GND til de respektive pinnene (sjekk databladet!) + En pullup -motstand for å tilbakestille og koble pins fra din arduino til brikken. Dette er linjene på Arduino og deres funksjon 13 - SCK 12 - MISO 11 - MOSI 10 - RST (Reset) Eller du kan lage en 2x3pin ISP -topptekst som du kan koble til et kort som gir en (et annet arduino -kort). Pinout for ISP -overskriften er på det tredje bildet. Det er 3 lysdioder for å indikere statusen til programmereren. pin 9 - blå led - det er programmeringssignalens puls. pin 8 - rød led - indikerer en feil pin 7 - grønn led - indikerer at programmeringen pågår (jeg var lat, så jeg passet ikke til fargene i oppsettet mitt) Her er tegningene laget i Fritzing Du kan også lage en MEGA-isp skjold. Yaroslav Osadchyy designet skjoldet i ørn. Du kan få ørnfilene på nettstedet hans:

Trinn 3: Last opp skissen

Last ned skissen fra mega-isp google code. (Avrisp.03.zip i skrivende stund). Pakk den ut og kjør arduino ide og åpne avrisp.pde. Last den opp til arduino -kortet. Heartbeat led skal begynne å slå.

Trinn 4: Bruke med Avrdude

For å bruke med avrdude (og alle GUI -er som bruker den) må du velge avrisp -programmereren. den sikreste bithastigheten er 19200.

For å teste din nye atmega168 fra kommandolinjen, prøv: $ avrdude -p m168 -P /dev /ttyUSB0 -c avrisp -b 19200 /dev /USB0 er porten som arduino er koblet til Linux -boksen min (din kan være com5). Dette kan sjekkes i arduino IDE i Verktøy -> Seriell port. Du bør få: [kabturek@hal -9000 ~]# avrdude -p m168 -P /dev /ttyUSB0 -c avrisp -b 19200 avrdude: AVR -enhet initialisert og klar til å godta instruksjoner Reading | #################################################### | 100% 0.13s avrdude: Enhetssignatur = 0x1e9406 avrdude: safemode: Sikringer OK avrdude ferdig. Takk skal du ha. Det betyr at alt er ok. Hvis du får feil - sjekk det siste trinnet.

Trinn 5: Brenn USBtinyISP -fastvare til en Attiny2313

USBTinyISP er en flott programmerer fra LadyAda som er veldig billig - 22 $. Jeg hadde en ekstra attiny2313 og noen deler, så jeg bestemte meg for å lage en selv. Hvis du ikke har noen erfaring med å lage PCB i råd, kjøper du settet fordi det er høyere kvalitet enn du kan lage selv:). Kjøp i det minste PCB -en hvis du vil bygge en. Du kan få det fra Adafruit. Koble til ATtiny2313 På det siste bildet kan du se attiny2313 med pinnene som ble brukt til Internett -leverandøren i rødt. Bildet er fra LadyAda avr tutorial. Brenne fastvaren: Pakk ut USBTinyISP -fastvaren. Gå til spi dir og kjør $ avrdude -p pt2313 -P /dev /ttyUSB0 -c avrisp -b 19200 for å sjekke om alt er ok med brikken. Sett nå sikringene: $ avrdude -P /dev /ttyUSB0 -c avrisp -b 19200 -pt2313 -U hfuse: w: 0xdf: m -U lfuse: w: 0xef: m Nå bør du feste den 12mhz eksterne oscillatoren til brikken. Og brenn fastvaren: $ avrdude -B 1 -pt2313 -U flash: w: main.hex -P /dev /ttyUSB0 -c avrisp -b 19200 Voila. Attiny2313 har fastvaren USBTinyISP.

Trinn 6: Burning the Arduino Bootloader

Jeg lurte litt fordi jeg brukte en RBBB for å forenkle tilkoblingene. Skjemaet er på bilde nr. 2. Hvis du bruker 2 arduinoer, bruk bilde #3 og koble ISP -pinnen til ICSP 2x3header på den andre (slave) arduinoen. Bare koble usb -strømmen til det første kortet. GUI-måten Dette er litt vanskelig fordi du ikke bare kan bruke Tools-> Burn Bootloader-> w/ AVR ISP fordi standardhastigheten er for stor for mega-isp. Finn avrdude.conf som følger med arduino IDE (i arduino/hardware/tools/avrdude.conf) og endre grensen for avrisp programmerer fra 115200 til 19200 (rundt linje 312) Finn og endre i avrdude.conf programmerer id = "avrisp"; desc = "Atmel AVR ISP"; baudrate = 115200; # standard er 115200 type = stk500;; til: programmerer id = "avrisp"; desc = "Atmel AVR ISP"; baudrate = 19200; # standard er 115200 type = stk500;; Nå kan du bruke Verktøy -> Burn Bootloader -> w/AVR ISP (etter at du har valgt riktig kort fra Verktøy -menyen) Kommanlinje Du kan også bruke kommandolinjen: Rediger arduino/hardware/bootloaders/atmega/Makefile og endre ISPTOOL/PORT /SPEED til: # skriv inn parametrene for avrdude isp -verktøyet ISPTOOL = avrisp ISPPORT = /dev /ttyUSB0 ISPSPEED = -b 19200 nei du kan skrive $ make diecimila_isp for å brenne sikringer og bootloader. Test Koble nå den nye arduinoen til usb og brenn det blinkende!

Trinn 7: Feilsøking

Avrdude-feil: avrdude: ser_open (): kan ikke åpne enheten "/dev/ttyUSB0": Ingen slik fil eller katalog Du har angitt feil port (-P) eller arduinoen er ikke tilkoblet. sjekk tilkoblingen avrdude: Device signature = 0x000000 avrdude: Yikes! Ugyldig enhetssignatur. Dobbeltsjekk tilkoblinger og prøv igjen, eller bruk -F for å overstyre denne sjekken. Dette er en generell feil. Brikken din blir ikke gjenkjent. Kontroller tilkoblingen på brettet (GND/5V koblet til pinner?) Du får denne feilen når brikken din er konfigurert til å bruke en ekstern oscillator og den ikke fungerer (det er ikke en eller den svinger ikke riktig - 22pf caps mangler?)