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
2 Responses
absolutně nechápu, jak můžete prodávat nefunkční produkt, a ještě po mne chtít, ať utratím víc peněz kvůli vaší neschopnosti
Nikdo to po vás nechce, jestli máte nefunkční desku -> reklamujte. Naší desky jsou funkční a my jen navíc sepsali návod jak konkrétní problém vyřešit.