Zdravím všechny uživatele Habr, zejména ty, kteří si potrpí na Arduino téma, jako jsem já.

Lidé se mě dlouho ptali: je možné flashovat hex soubory pomocí Arduina? Vyměnit pojistky? Přečíst firmware? A všechny ty věci. Odpověď je ano a dnes vám řeknu, jak to dělám já.

(Toto video duplikuje informace uvedené níže)

Arduino je podle mě výborný začátek pro začátečníka, ale je potřeba dále růst, svět mikrokontrolérů je úžasný a nabízí skvělé příležitosti, ale bohužel, Arduino je spíše úzkoprofilový směr.

Trochu pozadí:
Jednoho krásného dne jsem narazil na výborný projekt na ATtiny13, ale bohužel, autor nahrál do sítě pouze hex soubor a diagram a já jsem to samozřejmě nikdy nemohl hardwarově vyzkoušet. Tahle otázka mě mučila víc a víc a pak jsem náhodou narazil na jedno video na síti, kde autor tvrdil, že flashoval jiný mikrokontrolér pomocí Arduina, mající jen hex soubor a samozřejmě obvod. Byl to on, kdo mi navrhl – použít SinaProg, ale se soubory Arduino.

Po vygooglování tématu SinaProg jsem si stáhl SinaProg 2.1.1.RUS, ale odmítl pracovat s Arduinem, tak jsem hodil pár souborů z Arduino IDE do složky SinaProg 2.1.1data a vše fungovalo.

Pojďme si krátce projít možnosti softwaru:

image

V bloku Hexadecimální soubor vyberte hex nebo eep ​​(první je firmware, druhé je obsah energeticky nezávislé paměti).

A v části, kde je tlačítko „>“, můžeme vidět nejrůznější zprávy jako „OK“ nebo „CHYBA“, zatímco samotné tlačítko „>“ otevírá protokoly Avrdude.

V bloku blesk jsou tam tlačítka:

Program — zápis hex souboru do mikrokontroléru (možná, když je vybrán Hex-soubor);
Ověřit – kontrola firmwaru v mikrokontroléru a hex souboru (jinými slovy jejich porovnání), pokud je vše v pořádku, program řekne OK;
Číst — čtení hex souboru.

S blokem EEPROM vše je analogické.

Další blok Přístroj, zde si můžete vybrat požadovaný mikrokontrolér, zde je celý seznam podporovaných (seznam byl vytržen ze souboru Device.txt, který je ve složce SinaProg 2.1.1data):

Pár jich tu je

Dělám si srandu, je jich tolik:

AT90CAN128
AT90CAN32
AT90CAN64
AT90PWM2
AT90PWM2B
AT90PWM3
AT90PWM3B
AT90USB1286
AT90USB1287
AT90USB162
AT90USB646
AT90USB647
AT90USB82
AT90s1200
AT90s2313
AT90s2323
AT90s2333
AT90s2343
AT90s4414
AT90s4433
AT90s4434
AT90s8515
AT90s8535
Atmega103
Atmega128
Atmega1280
Atmega1281
ATmega1284P
ATmega128RFA1
Atmega16
Atmega161
Atmega162
Atmega163
ATmega164P
Atmega168
Atmega169
Atmega2560
Atmega2561
Atmega32
ATmega324P
Atmega325
Atmega3250
ATmega328P
Atmega329
Atmega3290
ATmega3290P
ATmega329P
Atmega48
Atmega64
Atmega640
Atmega644
ATmega644P
Atmega645
Atmega6450
Atmega649
Atmega6490
Atmega8
Atmega8515
Atmega8535
Atmega88
ATtiny11
ATtiny12
ATtiny13
ATtiny15
ATtiny22 2343
ATtiny2313
ATtiny24
ATtiny25
ATtiny26
ATtiny261
ATtiny44
ATtiny45
ATtiny461
ATtiny84
ATtiny85
ATtiny861
ATtiny88
ATxmega64A1
ATxmega128A1
ATxmega128A1D
ATxmega192A1
ATxmega256A1
ATxmega64A3
ATxmega128A3
ATxmega192A3
ATxmega256A3
ATxmega256A3B
ATxmega16A4
ATxmega32A4
ATxmega64A4
ATxmega128A4

ČTĚTE VÍCE
Kdo a kdy objevil Austrálii?

Jak vidíte, existují všechny populární mikrokontroléry od ATmel, zejména ATmega328P, ATmega8, ATtiny13, ATtiny2313 a všechny druhy dalších.

Tlačítko Další Vyhledávání, pokud jej stisknete, program se pokusí přečíst signatury mikrokontroléru, který je připojen k programátoru, jinými slovy, vyhledá mikrokontrolér. Poté může v informačním bloku odpovědět „OK“ nebo „CHYBA“, pokud je vše v pořádku nebo ne.

V bloku pojistky Existují předvolby pro ATmega8 pro práci na různých frekvencích, ale bohužel pouze pro ATmega8 a ATmega32 je můžete přidat do souboru Fuse.txt (který je ve složce SinaProg 2.1.1data).

Je tam tlačítko Program — zapište si předvolby, podívejte se na odstavec výše.

A pokročilý — přerušované tlačítko, po jeho stisknutí se zobrazí toto okno:

image

Podpis zařízení – nějaká čísla, pokud tomu rozumím, jedná se o identifikátor mikrokontroléru, pomocí nich program rozpozná, jaký mikrokontrolér mu dáváme.

Informační část, vše je jako výše.

Těsně dole jsou pojistky. pokud máte opravdu pocit svědění, nezapomeňte je nejprve počítat jako tlačítko číst(aby nedošlo k záměrné výměně důležitých pojistek, například „SPIEN“ nebo „RSTDSBL“), zapište si pojistky – tlačítko Napsat, knoflík Vymazání čipu vymaže mikrokontrolér, což zhruba připomíná formátování flash disku v počítači (ale pojistky nejsou standardně instalovány, takže byste na to neměli zapomenout).

Pár slov k pojistkovým bitům – jsou to takové jemné úpravy mikrokontroléru, pak zvedněte frekvenci, pak snižte, pak zapněte/vypněte taktování z vnitřního RC řetězce a ještě něco. obecně tam jděte jen jako poslední možnost, jinak můžete zablokovat mikrokontrolér (podvádět natolik, že přestane fungovat, vážně) a bez Atmega fusebit doctor je to nemožné.

Tady je první odkaz od Google na dotaz “kalkulačka pojistek”, ale varuji, strkat tam něco, aniž byste věděli, k čemu to je, a pak to nahrát do mikrokontroléru nepovede k ničemu dobrému, to vím.

Pak tam byl ještě nějaký informační blok, do toho jsem se moc neponořil. No, výstupní tlačítko, myslím, že jste to už uhodli, i když neumíte anglicky.

Poslední blok hlavního okna programu je tedy Programátor, zde vyberete typ programátoru, pokud jako programátor používáte Arduino – dejte vše jako na mém screenshotu, jen ne COM19, to mám já, pravděpodobně budete mít jiného, ​​každopádně rozhodně ne COM1, ten první je systémový, je relevantní pouze pro programátory, kteří se připojují ke skutečnému COM portu, například Gromov Programmer. Notebook nemusí mít port COM, ale počítače zpravidla stále mají port COM, zejména starší. Můžete použít i jiný programátor, např. USBASP, ale nezapomeňte jej vybrat v seznamu, nastavuji mu rychlost stejnou jako v případě AVRISP.

ČTĚTE VÍCE
Jaký druh půdy je potřeba pro Anubias?

Seznam podporovaných programátorů:

To nebude stačit

Gromov
USBtiny
Alf
Arduino
U ISP
AVR109
AVR910
AVR911
AVRISP
AVRISP 2
AVRISP mkII
AVRISP v2
Bascom
Blaster
BSD
Motýl
C2N232I
DAPA
A
DASA 3
Dragon_DW
Dragon_HVSP
Dragon_ISP
Dragon_JTAG
Dragon_PP
DT006
ERE-ISP-AVR
Frank-STK200
Futurlec
JTAG 1
JTAG 1Pomalý
JTAG 2Pomalý
JTAG 2
JTAG 2 Rychlý
JTAG 2ISP
JTAG 2dW
JTAG mkI
JTAG mkII
MIB510
pAVR
Picoweb
Pony-STK200
ponyser
SI Prog
SP12
STK200
STK500
STK500 HVSP
STK500PP
STK500 v1
STK500 v2
STK600
STK600 HVSP
STK600PP
USBasp
Xil

Osobně jsem testoval pouze na programátorech AVRISP (Arduino s prošitou skicou ArduinoISP) a USBasp, na dvou mikrokontrolérech – ATmega8 a ATtiny13.

Abyste mohli šít/číst/vyměňovat pojistky/ zabít mikrokontrolér pomocí Arduina musíte nejprve ušít náčrt ArduinoISP, propojit vše, jak jsem psal, například zde:

Stručně řečeno, zapojíme piny Reset, MOSI, MISO, SCK mikrokontroléru, kterým problikneme/přečteme firmware/vyměníme pojistky, jak je naznačeno na náčrtu v komentářích, a to:

. // pin name: not-mega: mega(1280 and 2560) // slave reset: 10: 53 // MOSI: 11: 51 // MISO: 12: 50 // SCK: 13: 52 . 

Zde je příklad připojení k Arduino ATmega8:

image

No, analogicky. Pin mapku hledáme např. v datasheetu (technická dokumentace k MK) mikrokontroléru, který nás zajímá, zde je např. první odkaz od Google na dotaz „ATmega8 pdf“.

PS Měl jsem takový problém, že ATtiny13 přestal blikat, když jsem to zkoušel naprogramovat, po pokusu o spuštění na frekvenci 128 kHz jsem někde takto vyhrabal trochu upravený kód ArduinoISP, který dělá firmware/pojistku změny se dějí několikrát pomaleji, možná nějaký jiný druh magie, nepřišel jsem na to, upřímně.