Může se stát, že tvoje Arduino deska po spoustě přeprogramování přestane komunikovat a pokusy o nahrání softwaru do desky skončí vždy chybou. Na vině může být poškozený bootloader. V našem příspěvku si probereme jaké jsou možnosti opravy.
Pro přeprogramování bootloaderu nelze použít stávající USB převodník a musíme zvolit přímé programování pomocí ISP.
Existují v podstatě dvě možnosti:
- pro přeprogramování použijeme některý z ISP programátorů, např. tento: ISP programátor pro ATMEL + adaptér z 10pin na 6pin konektor.
- jako programátor použijeme jinou Arduino desku, např. Arduino UNO
1. Obnova bootloaderu pomocí ISP programátoru
Tato varianta je nejjednodušší. Stačí nainstalovat ovladače programátoru, připojit ho do konektoru ICSP na Arduino desce a přeprogramovat bootloader.
Pozice ICSP konektoru je vyznačena na obrázku v sekci 2 – Obnova bootloaderu pomocí druhé Arduino desky.
Po nainstalování programátoru spusť Arduino IDE a menu Nástroje v položce Programátor vyber svůj nainstalovaný programátor. V našem případě máme USBasp.
Jako další v menu Nástroje – Vývojová deska vyber typ desky, na ktré chceš přeprogramovat bootloader. V našem případě Arduino Uno.
Pak již stačí v menu Nástroje – Vypálit zavaděč nahrát nový bootloader do desky.
Po skončení nahrávání bootloaderu by již mělo být možné nahrávat software pomocí USB převodníku integrovaného na desce.
Pokud ani po přehrání bootloaderu programování desky přez integrovaný USB převodník nejde, nebo nahrávání bootloaderu přes ISP programátor končí chybou, bude nejspíše vadný mikrokontroler, nebo USB převodník na vývojové desce. V tom případě obnova bootloaderu desku neopraví.
2. Obnova bootloaderu pomocí druhé Arduino desky
Pokud nemáš k dispozici některý z ISP programátorů pro mikrokontrolery Atmel, můžeš jako programátor použít jinou funkční Arduino desku.
Nejdříve je potřeba do funkční desky, která bude fungovat jako programátor, nahrát správný software.
V menu Arduino IDE Soubor – Příklady – ArduinoISP vyber možnost ArduinoISP. V novém okně se otevře zdrojový kód, který z Arduino desky udělá ISP programátor. Kód není potřeba nijak upravovat a stačí ho jen obvyklým způsobem nahrát do desky.
Potom se propojí deska „programátoru“ s deskou, kam budeš nahrávat nový bootloader.
Arduino deska | MOSI | MISO | SCK | Napěťová úroveň |
Uno nebo Duemilanove | 11 nebo ICSP-4 | 12 nebo ICSP-1 | 13 nebo ICSP-3 | 5V |
Mega1280 nebo Mega2560 | 51 nebo ICSP-4 | 50 nebo ICSP-1 | 52 nebo ICSP-3 | 5V |
Leonardo | ICSP-4 | ICSP-1 | ICSP-3 | 5V |
Due | ICSP-4 | ICSP-1 | ICSP-3 | 3,3V |
Zero | ICSP-4 | ICSP-1 | ICSP-3 | 3,3V |
101 | 11 nebo ICSP-4 | 12 nebo ICSP-1 | 13 nebo ICSP-3 | 3,3V |
MKR Family | 8 | 10 | 9 | 3,3V |
Zapojení ICSP konektoru na desce:
Pro ukázku schéma propojení dvou Arduino UNO desek:
Po propojení desek vyber v Arduino IDE menu Nástroje – Programátor typ programátoru Arduino as Programmer.
Dál už je postup stejný, jako u varianty 1.
Další schémata zapojení a další informace na stránkách arduino.cc: Arduino as ISP and Arduino Bootloaders
5 Responses
Jenom laicky – proč nestačí USB ? Nemá sílu ? Jakože nestačí připojit USB na ještě funkční vstupy pro obnovení ?
Dobrý den, přiznáme se, že ne zcela rozumíme Vašemu příspěvku. Jsou zde popsány dvě varianty. V první variantě je opravované Arduino napájeno z připojeného ISP programátoru a v druhém případě je napájeno z Arduina, které je použito jako programátor. Obojí (jak ISP programátor, tak Arduino jako programátor) je napájeno pomocí USB. Opravované Arduino tak není nutné zvlášť napájet pomocí USB konektoru.
zřejmě myslíte proč nejde bootloader přehrát „klasicky“ přes USB, jako se tam láduji sketche?
protože to USB ládování zpřístupňuje právě bootloader, ten plní roli jakoby firmwaru, který to nahrávání přes USB vůbec umožňuje, bez něj to nejde.
a taky ten ISP nastavuje fuse bits, podrobně je to popsané tady
https://docs.arduino.cc/built-in-examples/arduino-isp/ArduinoISP
Dle mě škoda , že autor šetřil s obrázky u kapitoly 2 a tím to je trochu matoucí v prvém případě je arduino dle mě napájeno přes ICSP konektor akonektor USB není vůbec použiván a v druhém případě přes USB konektor „zdravého“ arduina.
Bastlení zdar 🙂
to schéma zapojení nefunguje!!!!!!