Nelze nahrát program do Arduino UNO R3

Máš doma vývojovou desku Arduino UNO R3, ATmega328P, Precizní klon a nejde ti do ní nahrát program? Port v Arduino IDE je v pořádku, deska se správně hlásí? Při nahrávání programu do desky bliká jen LEDka RX, ale TX ne? Možná jsi se setkal s výrobní chybou, na kterou jsme u několika kusů narazili také.

Co tuto chybu způsobuje: na desce je jako USB převodník použitý mikrokontroler ATmega16U2(stejně jako u originálu), který má v sobě speciální program, kterým umožňuje přes USB na jedné straně a UART na straně druhé, nahrávat do mikrokontroleru ATmega328P program. Tento „převodníkový“ mikrokontroler musí mít také správně nastavené tzv. pojistky. A tady se skrývá právě ta chyba.

Ve výrobě někdo zapomněl jednu z pojistek nastavit na správnou hodnotu a to způsobuje, že je chybné nastavení frekvence mikrokontroleru a tudíž nefunguje komunikace přes UART.

Co s tím? Oprava je v tomto případě vcelku jednoduchá.

K opravě desky bude ale potřebovat ISP programátor s ovládacím softwarem. Z naší nabídky např. tento: USBasp + adaptér z 10p na 6p a program AVRDUDESS.

Programátor pomocí adaptéru připojíš do ICSP konektoru pro USB převodník:

Na obrázku je to konektor nahoře vlevo, označený jako ICSP for USB Interface. Pin 1 je na desce označen bílou tečkou a je směrem k nápisu AREF.

Nainstaluj a spusť program AVRDUDESS a vyber typ programátoru (Programmer): v našem případě USBasp, http://www.fischl.de/usbasp/. Ve volbě Bit clock vyber hodnotu 375 KHz, nebo menší.

Potom vpravo klepni na tlačítko Detect. Pokud je všechno v pořádku, měl by se ti do políčka MCU načíst správný typ mikrokontroleru – ATmega16U2.

Pokud toto proběhlo bez chyb, klepni v sekci Fuses & lock bits na horní tlačítko Read.

Po načtení se v políčku L objeví hodnota 0x0F. To je hodnota, která je chybná a musí se změnit. Přepiš ji na 0xEF a klepni na tlačítko Write.

Pokud vše proběhlo bez chyb, měla by být v tuto chvíli deska plně funkční. Odpoj tedy programátor z ICSP a můžeš zavřít i AVRDUDESS.

Pro ty, kteří nepoužívají grafické rozhraní a pracují v příkazovém řádku tu máme příkaz, kterým se nastaví správné pojistky:

avrdude -u -c usbasp -p m16u2 -B 2.0 -U lfuse:w:0xEF:m

Sdílet článek

Jedna odpověď

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Mohlo by se také líbit