Obsah:
Video: Jak naprogramovat AVR (arduino) pomocí jiného Arduina: 7 kroků
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-13 06:57
Tento návod je užitečný, pokud:
* Máte arduino s atmega168 a koupili jste atmega328 v místním obchodě s elektronikou. Nemá zavaděč arduino * chcete vytvořit projekt, který nepoužívá arduino - jen běžný AVR čip (jako USBTinyISP) - máte čistý attiny2313/attiny48 atd., Na který chcete vypálit firmware. Normálně byste k naprogramování nového čipu museli mít ISP (In System Programmer) jako USBTinyISP. Mít arduino ho můžete naučit být programátorem díky skvělé práci, kterou odvedl Randall Bohn. Vytvořil Mega -ISP - skicu arduina, která funguje jako programátor.
Krok 1: Co potřebujete?
* funkční Arduino (nebo klon - používám BBB - BareBonesBoard a RBBB - RealBareBonesBoard od ModernDevices) * čip, který chcete naprogramovat (testováno s atmega8, atmega168, atmega368, attiny2313, attiny13) * prkénko nebo deska se záhlavím ISP * 3 LED + 3 odpory * dráty pro nepájivé pole
Krok 2: Výroba programátoru Mega-isp na prkénku
Existují dva způsoby, jak připojit Arduino k programování čipu.
Můžete připojit svůj avr čip na prkénko a připojit 5v a GND k příslušným pinům (podívejte se na datový list!) + Vytahovací odpor k resetování a drátové piny od vás arduino k čipu. Toto jsou řádky na Arduinu a jejich funkce 13 - SCK 12 - MISO 11 - MOSI 10 - RST (Reset) Nebo si můžete vytvořit 2x3pin ISP záhlaví, které můžete zapojit do desky, která ho poskytuje (další arduino deska). Pinout pro záhlaví ISP je na třetím obrázku K dispozici jsou 3 LED diody indikující stav programátora. kolík 9 - modrá LED - jeho odezva programátora. pin 8 - červená LED - indikuje chybu pin 7 - zelená LED - indikuje, že probíhá programování (byl jsem líný, takže jsem neodpovídal barvám v mém nastavení) Zde jsou výkresy vytvořené ve Fritzing Můžete také vytvořit Štít MEGA-isp. Yaroslav Osadchyy navrhl štít v orlu. Soubory orla můžete získat na jeho webu:
Krok 3: Nahrání náčrtu
Stáhněte si skicu z mega-isp google kódu. (Avrisp.03.zip v době psaní článku). Rozbalte jej a spusťte arduino ide a otevřete avrisp.pde. Nahrajte jej na svoji desku arduino. Kontrolka tepu by měla začít bít.
Krok 4: Používání s Avrdude
Chcete -li použít s avrdude (a všemi GUI, která jej používají), musíte vybrat programátor 'avrisp'. nejbezpečnější bitrate je 19200.
Chcete -li otestovat svůj nový atmega168 z příkazového řádku, zkuste: $ avrdude -p m168 -P /dev /ttyUSB0 -c avrisp -b 19200 /dev /USB0 je port, ke kterému je arduino připojeno k mému linuxovému boxu (váš může být com5). To lze zkontrolovat v arduino IDE v Nástroje -> Sériový port. Měli byste získat: [kabturek@hal -9000 ~]# avrdude -p m168 -P /dev /ttyUSB0 -c avrisp -b 19200 avrdude: Zařízení AVR inicializováno a připraveno přijímat pokyny Čtení | ############################################################################# | 100% 0.13s avrdude: Device signature = 0x1e9406 avrdude: safemode: Fuses OK avrdude done. Děkuji. To znamená, že je vše v pořádku. Pokud se zobrazí chyby - zkontrolujte poslední krok.
Krok 5: Vypálení firmwaru USBtinyISP na Attiny2313
USBTinyISP je skvělý programátor od LadyAda, který je opravdu levný - 22 $. Měl jsem náhradní attiny2313 a některé díly, tak jsem se rozhodl, že si jeden vyrobím sám. Pokud nemáte žádné zkušenosti s výrobou desek plošných spojů, doporučuji si ji koupit, protože je kvalitnější, než si můžete sami vyrobit:). Pokud si ji chcete postavit, kupte si alespoň desku plošných spojů. Můžete jej získat od společnosti Adafruit. Připojte ATtiny2313 Na posledním obrázku můžete vidět attiny2313 s piny použitými pro ISP červeně. Obrázek je z tutoriálu LadyAda avr. Vypalování firmwaru: Rozbalte firmware USBTinyISP. Přejděte na spi dir a spusťte $ avrdude -p pt2313 -P /dev /ttyUSB0 -c avrisp -b 19200 a zkontrolujte, zda je s čipem vše v pořádku. Nyní nastavte pojistky: $ avrdude -P /dev /ttyUSB0 -c avrisp -b 19200 -pt2313 -U hfuse: w: 0xdf: m -U lfuse: w: 0xef: m Nyní byste měli na čip připojit externí oscilátor 12 MHz. A vypálit firmware: $ avrdude -B 1 -pt2313 -U flash: w: main.hex -P /dev /ttyUSB0 -c avrisp -b 19200 Voila. Váš attiny2313 má firmware USBTinyISP.
Krok 6: Vypálení zavaděče Arduino
Připojování Trochu jsem podváděl, protože jsem použil RBBB ke zjednodušení připojení. Schéma je na obrázku č. 2. Pokud používáte 2 arduino, použijte obrázek č. 3 a připojte pin ISP k ICSP 2x3header na druhém (slave) arduinu. Připojte pouze USB napájení k první desce. Způsob GUI Je to trochu ošidné, protože nemůžete použít pouze Nástroje-> Vypálit bootloader-> s AVR ISP, protože výchozí rychlost je pro mega-ISP příliš velká. Najděte avrdude.conf, který je dodáván s arduino IDE (v arduino/hardware/tools/avrdude.conf) a změňte hranici pro avrisp programátor z 115200 na 19200 (kolem řádku 312) Najděte a změňte v avrdude.conf programátor id = "avrisp"; desc = "Atmel AVR ISP"; přenosová rychlost = 115200; # výchozí je 115200 typ = stk500;; pro: programátor id = "avrisp"; desc = "Atmel AVR ISP"; přenosová rychlost = 19200; # výchozí je 115200 typ = stk500;; Nyní můžete použít Tools -> Burn Bootloader -> w/AVR ISP (after you select the appropriate board from the Tools menu) Commanline Můžete také použít příkazový řádek: Edit arduino/hardware/bootloaders/atmega/Makefile a změnit ISPTOOL/PORT /RYCHLOST na: # zadejte parametry pro nástroj avrdude isp ISPTOOL = avrisp ISPPORT = /dev /ttyUSB0 ISPSPEED = -b 19200 ne, můžete napsat $ make diecimila_isp k vypálení pojistek a bootloaderu. Test Nyní připojte nové arduino k USB a spálit blinky!
Krok 7: Odstraňování problémů
Chyby Avrdude: avrdude: ser_open (): nelze otevřít zařízení "/dev/ttyUSB0": Žádný takový soubor nebo adresář Zadali jste nesprávný port (-P) nebo vaše arduino není připojeno. zkontrolujte připojení avrdude: Podpis zařízení = 0x000000 avrdude: Fuj! Neplatný podpis zařízení. Znovu zkontrolujte připojení a zkuste to znovu nebo pomocí -F tuto kontrolu přepište. Toto je druh obecné chyby. Váš čip nebyl rozpoznán. Zkontrolujte připojení na desce (GND/5V připojeno k pinům?) K této chybě dojde, když je váš čip nakonfigurován pro použití externího oscilátoru a nefunguje (žádný neexistuje nebo nekmitá správně - 22pf cap) chybí?)