Inhoudsopgave:

Een AVR (arduino) programmeren met een andere Arduino - Ajarnpa
Een AVR (arduino) programmeren met een andere Arduino - Ajarnpa

Video: Een AVR (arduino) programmeren met een andere Arduino - Ajarnpa

Video: Een AVR (arduino) programmeren met een andere Arduino - Ajarnpa
Video: Arduino als ISP. 2024, November
Anonim
Een AVR (arduino) programmeren met een andere Arduino
Een AVR (arduino) programmeren met een andere Arduino
Een AVR (arduino) programmeren met een andere Arduino
Een AVR (arduino) programmeren met een andere Arduino
Een AVR (arduino) programmeren met een andere Arduino
Een AVR (arduino) programmeren met een andere Arduino

Dit instructables is handig als:

* je hebt je arduino met atmega168 en je hebt een atmega328 gekocht bij je plaatselijke elektronicawinkel. Het heeft geen arduino-bootloader * je wilt een project maken dat geen arduino gebruikt - alleen een gewone AVR-chip (zoals de USBTinyISP) - je hebt een schone attiny2313/attiny48 enz. waarop je firmware wilt branden. Normaal gesproken zou u een ISP (In System Programmer) zoals USBTinyISP moeten hebben om uw nieuwe chip te programmeren. Als je de arduino hebt, kun je hem leren een programmeur te zijn dankzij het geweldige werk van Randall Bohn. Hij creëerde Mega-ISP - een Arduino-schets die werkt als een programmeur.

Stap 1: Wat heb je nodig?

Wat heb je nodig ?
Wat heb je nodig ?

* een werkende Arduino (of een kloon - ik gebruik de BBB - BareBonesBoard en een RBBB - RealBareBonesBoard van ModernDevices) * een chip die je wilt programmeren (getest met atmega8, atmega168, atmega368, attiny2313, attiny13) * een breadboard of een bord met ISP-header * 3 leds + 3 weerstanden * breadboard-draden

Stap 2: De Mega-isp-programmeur op een breadboard maken

De Mega-isp Programmer op een Breadboard maken
De Mega-isp Programmer op een Breadboard maken
De Mega-isp-programmer op een breadboard maken
De Mega-isp-programmer op een breadboard maken
De Mega-isp-programmer op een breadboard maken
De Mega-isp-programmer op een breadboard maken

Er zijn twee manieren om je Arduino aan te sluiten om een chip te programmeren.

Je kunt je avr-chip op een breadboard aansluiten en 5v en GND aansluiten op de respectieve pinnen (bekijk de datasheet!) + een pullup-weerstand om te resetten en de pinnen van je arduino naar de chip te bedraden. Dit zijn de lijnen op Arduino en hun functie 13 - SCK 12 - MISO 11 - MOSI 10 - RST (Reset) Of je kunt een 2x3pin ISP-header maken die je kunt aansluiten op een bord dat er een heeft (een ander arduino-bord). De pinout voor de ISP-header staat op de derde afbeelding. Er zijn 3 leds om de status van de programmeur aan te geven. pin 9 - blauwe led - het is de hartslag van de programmeur. pin 8 - rode led - geeft een fout aan pin 7 - groene led - geeft aan dat de programmering plaatsvindt (ik was lui dus ik kwam niet overeen met de kleuren in mijn setup) Hier zijn de tekeningen gemaakt in Fritzing Je kunt ook een MEGA-isp-afscherming. Yaroslav Osadchyy ontwierp het schild in adelaar. Je kunt de adelaarsbestanden op zijn site krijgen:

Stap 3: De schets uploaden

De schets uploaden
De schets uploaden

Download de schets van mega-isp google code.(avrisp.03.zip op het moment van schrijven). Pak het uit en voer arduino ide uit en open avrisp.pde. Upload het naar je Arduino-bord. Heartbeat-led zou moeten beginnen te kloppen.

Stap 4: Gebruiken met Avrdude

Gebruiken met Avrdude
Gebruiken met Avrdude

Om te gebruiken met avrdude (en alle GUI's die het gebruiken) moet je de 'avrisp' programmer selecteren. de veiligste bitrate is 19200.

Om je nieuwe atmega168 vanaf de commandoregel te testen, probeer je: $ avrdude -p m168 -P /dev/ttyUSB0 -c avrisp -b 19200 /dev/USB0 is de poort waarop arduino is aangesloten op mijn linux-box (die van jou kan com5) zijn. Dit kan worden gecontroleerd in arduino IDE in Tools -> Serial Port. Je zou moeten krijgen: [kabturek@hal-9000 ~]# avrdude -p m168 -P /dev/ttyUSB0 -c avrisp -b 19200 avrdude: AVR-apparaat geïnitialiseerd en klaar om instructies te accepteren Lezen | ################################################## | 100% 0.13s avrdude: Apparaathandtekening = 0x1e9406 avrdude: safemode: Zekeringen OK avrdude klaar. Bedankt. Dat betekent dat alles in orde is. Als u fouten krijgt, controleer dan de laatste stap.

Stap 5: USBtinyISP-firmware branden op een Attiny2313

USBtinyISP-firmware branden op een Attiny2313
USBtinyISP-firmware branden op een Attiny2313
USBtinyISP-firmware branden op een Attiny2313
USBtinyISP-firmware branden op een Attiny2313
USBtinyISP-firmware branden op een Attiny2313
USBtinyISP-firmware branden op een Attiny2313

De USBTinyISP is een geweldige programmeur van LadyAda die echt goedkoop is - 22 $. Ik had een reserve attiny2313 en wat onderdelen, dus besloot ik er zelf een te maken. Als je geen ervaring hebt met het maken van PCB's, raad ik je aan de kit te kopen omdat deze van hogere kwaliteit is dan je zelf kunt maken:). Koop op zijn minst de PCB als je er een wilt bouwen. Je kunt het krijgen van Adafruit. Sluit de ATtiny2313 aan Op de laatste foto zie je de attiny2313 met de pinnen die gebruikt worden voor ISP in het rood. De afbeelding is van LadyAda avr-tutorial. De firmware branden: Pak de USBTinyISP-firmware uit. Ga naar de spi dir en voer $ avrdude -p pt2313 -P /dev/ttyUSB0 -c avrisp -b 19200 uit om te controleren of alles in orde is met de chip. Stel nu de zekeringen in: $ avrdude -P /dev/ttyUSB0 -c avrisp -b 19200 -pt2313 -U hfuse:w:0xdf:m -U lfuse:w:0xef:m Nu moet je de 12mhz externe oscillator op de chip aansluiten. En brand de firmware: $ avrdude -B 1 -pt2313 -U flash:w:main.hex -P /dev/ttyUSB0 -c avrisp -b 19200 Voila. Uw attiny2313 heeft de USBTinyISP-firmware.

Stap 6: De Arduino Bootloader branden

De Arduino Bootloader branden
De Arduino Bootloader branden
De Arduino Bootloader branden
De Arduino Bootloader branden
De Arduino Bootloader branden
De Arduino Bootloader branden

Verbinden Ik heb een beetje vals gespeeld omdat ik een RBBB heb gebruikt om de verbindingen te vereenvoudigen. Het schema staat op foto #2. Als je 2 arduino's gebruikt, gebruik dan afbeelding #3 en sluit de ISP-pin aan op de ICSP 2x3header op de tweede (slave) arduino. Sluit alleen de usb-voeding aan op het eerste bord. De GUI-manier Dit is een beetje lastig omdat je niet gewoon Tools-> Burn Bootloader -> met AVR ISP kunt gebruiken, omdat de standaardsnelheid te hoog is voor mega-isp. Zoek avrdude.conf dat wordt geleverd met arduino IDE (in arduino/hardware/tools/avrdude.conf) en verander de grenssnelheid voor avrdude programmer van 115200 naar 19200 (rond regel 312) Zoek en wijzig in avrdude.conf programmer id = "avrisp"; desc = "Atmel AVR ISP"; baudrate = 115200; # standaard is 115200 type = stk500;; naar: programmeur id = "avrisp"; desc = "Atmel AVR ISP"; baudrate = 19200; # standaard is 115200 type = stk500;; Nu kun je Tools -> Burn Bootloader -> w/ AVR ISP gebruiken (nadat je het juiste board hebt geselecteerd in het menu Tools)Commanline Je kunt ook de opdrachtregel gebruiken: arduino/hardware/bootloaders/atmega/Makefile bewerken en ISPTOOL/PORT wijzigen /SPEED om: # voer de parameters in voor de avrdude isp-tool ISPTOOL = avrisp ISPPORT = /dev/ttyUSB0 ISPEED = -b 19200 nee je kunt $ make diecimila_isp schrijven om zekeringen en de bootloader te branden. Test Sluit nu je nieuwe arduino aan op usb en verbrand de blinkende!

Stap 7: Problemen oplossen

Probleemoplossen
Probleemoplossen

Avrdude-fouten: avrdude: ser_open(): kan apparaat niet openen "/dev/ttyUSB0": geen dergelijk bestand of map U hebt de verkeerde poort (-P) opgegeven of uw arduino is niet aangesloten. controleer de verbinding avrdude: Device signature = 0x000000 avrdude: Yikes! Ongeldige apparaathandtekening. Controleer de verbindingen nogmaals en probeer het opnieuw, of gebruik -F om deze controle te negeren. Dit is een soort algemene fout. Uw chip wordt niet herkend. Controleer de verbinding op het bord (GND/5V aangesloten op pinnen?) U krijgt deze foutmelding wanneer uw chip is geconfigureerd om een externe oscillator te gebruiken en deze niet werkt (er is er geen of hij oscilleert niet goed - 22pf caps missend ?)

Aanbevolen: