Stránka 1 z 2

Arduino, bootloader a pojistky pro Atmega 328P *vyřešeno*

Napsal: 13 bře 2017, 12:18
od hafca
Tak dlouho jsem si hrál s Arduino UNO 3 a přehazoval procesory kvůli naklonování v programátoru, až jsem se v tom ztratil a teď mi Arduino nebootuje. Hledal jsem po internetu bootloadery a nastavení pojistek, ale je to pokaždé trochu jinak a hlavně, žádná kombinace nefunguje.
Nemá někdo tip, co tam napálit aby to fungovalo?

Napsal: 13 bře 2017, 12:57
od renda15
Nezkoušel jsi použít v Arduinu IDE volbu Vypálit zavaděč ? Ve verzi 1.6.9 to tam je.

Napsal: 13 bře 2017, 13:08
od hafca
Zkoušel, ale dlouho nic, jen párkrát problikne TX ledka. Je otázka, jaký má být nastavený programátor. U Arduino as ISP tvrdí, že nemůže otevřít port.

Napsal: 13 bře 2017, 13:40
od FHonza
Pro Uno je to v boards.txt takto:

Kód: Vybrat vše

uno.bootloader.tool=avrdude
uno.bootloader.low_fuses=0xFF
uno.bootloader.high_fuses=0xDE
uno.bootloader.extended_fuses=0x05
uno.bootloader.unlock_bits=0x3F
uno.bootloader.lock_bits=0x0F
uno.bootloader.file=optiboot/optiboot_atmega328.hex
Plná cesta k bootloaderu je (Win x64)

Kód: Vybrat vše

C:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\optiboot\optiboot_atmega328.hex
Vše platí pro Arduino IDE 1.8.1.

Napsal: 13 bře 2017, 13:54
od hafca
Tohle jsem zkoušel v eXtreme Burner. Bootloader tam je, ale v EX fuse mi 05 odmítá zapsat. Je tam DE, nebo DA. Nebo při kontrole http://www.engbedded.com/fusecalc by tam mohlo být FD. Ale je to na trigger level a to by snad nemuselo vadit, nebo se pletu? Lock fuse je tam FF.

Napsal: 13 bře 2017, 14:23
od FHonza
Na Extended fuse v tomto případě určitě nezáleží, Brown-out detection je stejně vypnuté. Záleží na "vypalovacím" programu jak se s tím popere. Když nejde 0x05, tak půjde 0xFD. Lock bity také není třeba měnit, naopak bych je nechal na default hodnotě od výrobce, abys nezamkl procesor. Při takto nastavených fuse musí být připojen krystal nejméně 8Mhz. SPI zapnuto je, takže nahrát bootloader by jít mělo.

Napsal: 13 bře 2017, 14:37
od hafca
Ani s tím nastavením se Arduino nerozběhne. Při pokusu o nahrání programu do něj, kompiluje a pak se nic neděje. V závěru vypíše chyby
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x77
což znamená, že není bootloader. To i přesto, že ho při zpětném načtení v programátoru vidím. Krystal mám 16MHz.

Napsal: 13 bře 2017, 14:42
od FHonza
A jaký máš programátor ?

Napsal: 13 bře 2017, 14:51
od hafca
Hlásí se jako http://www.fischl.de/usbasp/. ale mám ho už docela dlouho. Takže je to nejspíš nějaká starší verze.

Napsal: 13 bře 2017, 15:09
od FHonza
Až přijdu domů, tak to zkusím. Obecně v Arduino IDE je možnost "Export kompilovaného Binaru". To vytvoří dva *.hex soubory ve stejném adresáři jako je *.ino soubor. V jednom je samotný program, druhý je program + bootloader (v názvu má *with_bootloader*). Vyzkoušej ho nahrát do procesoru mimo prostředí Arduino IDE. Třeba pomocí AVRDude.

Napsal: 14 bře 2017, 10:52
od FHonza
Vzal sem novou ATmegu328, přidal k ní krystal a pojistky nastavil viz výše (Lock bity jsem neměnil). V Arduino IDE jsem jenom nastavil desku na "Arduino Uno", připojil programátor "USBasp" na příslušné porty a vše funguje. Napadlo mě podle hlášky co jsi sem dával: máš asi špatně nastavený programátor na stk500

Napsal: 14 bře 2017, 12:22
od Atlan
Skontrolovat ci nieje v poistkach nastavene div8, a skontrolovat clk frekvenciu na programatore.

Napsal: 14 bře 2017, 13:02
od FHonza
div8 nastaven není

Napsal: 14 bře 2017, 17:40
od hafca
Dík, vyzkouším, jen co vratim domu. Musel jsem odjet a wifina tu moc nefunguje.

Napsal: 15 bře 2017, 16:04
od hafca
Přes Arduino mi to hlásí, že mám aktualizovat firmware, případně problém s SCK. Nakonec se to chytlo přes eXtreme Burner - AVR a ten soubor s bootloaderem, co Arduino vygenerovalo. Ale pojistku 05 to ve všech programech co umí můj programátor nechtělo zapsat. Skončil jsem nakonec na FD.
Dík všem za pomoc.