Atmega328p - nejde nahrát program v arduino UNO a další
Moderátor: Moderátoři
Atmega328p - nejde nahrát program v arduino UNO a další
stalo se mi při hraní s hardujínem, že přestal fungovat čip. OK, nadrátoval jsem paralení programování, kompletně ho smazal, nahrál bootloader.
LED bliká, v IDE je vidět a hlásí se připojen. Jupí. Jenže v UNO desce do něj nejde nahrát program - chyba v komunikaci. LED Tx jen párkrát problikne, pak to vyhodí chybu.
Tak jsem zkusil optiboot (to už taky umím). LED 3x problikne, vše vypadá OK, ale zase - nejde nahrát program v UNO desce.
Tak jsem zkusil kompletní kopii celého programu z jiné Atmegy - včetně pojistek. A světe div se, normálně to chodí. Display je ovládán přes piny Uno 13(brouk 17-sck), 11(15-mosi) a 10-8. A normálně funguje. Tak jsem na funkční atmeze dopsal ještě blik LED na pinu 12(16-miso), opět nakopíroval do nefunkční a bliká.
Dám ho do UNO desky, funguje i v desce. Chci do něj nahrát program přes UNO - chyba.
Jiný brouk, ať už s kopií original bootloaderu arduina, nebo s optibootem problém nemá.
Tohle mě hlava nebere. Už se s něčím takovým někdo z vás potkal?
http://www.ebastlirna.cz/modules.php?na ... c&t=108955
Pojistky jsou OK. Arduino boot loader je má nastaveny jinak, než optiboot. Taky jsou na jiných adresách - bootloader je od 0000H, kdežto optiboot 7E00H.
Je mi jasné, že je po něm. Ještě jednou zkusím paralelní výmaz a pak půjde z domu. Ale je to zajímavé chování
Cílem je mít naprogramovaný atmega z arduina uno a nechat ho běžet samostatně s interním oscilátorem 8MHz.
To se mi povedlo tak, že jsem ho vzal, změnil odpovídající pojistky. Běží. Rád bych si ale ještě něco upřesnil...
1. je nutno zadávat frekvenci příkazem "#define F_CPU 8000000UL"? Funkci delay v programu na jednom místě používám (50ms).
2. v adresáři ...\AppData\Local\arduino\sketches\... jsem našel hex s bootloaderem a hex bez bootloaderu. Předpokládám, že po odladění stačí nahrát hex bez bootloaderu pro běh samotného programu. Ale nějak se mi nedaří správně nastavit pojistky. S bootloaderem mi to funguje.
Díky za odpovědi.
Použité knihovny: Adafruit_GFX.h, Adafruit_SSD1331.h SPI.h LowPower.h
Proč mi nemůže všechno chodit hned ?!!
První si ujasni, jak budeš procesor v zapojení nahrávat (USB převodník/serial), pokud tedy budeš. Podle toho je třeba vybrat bootloader.Cílem je mít naprogramovaný atmega
Jestli bootloader používá stejné nastavení oscilátoru jako tvůj program, pak frekvenci psát nemusíš. Pokud nepoužívá, pak je lepší ji napsat.
Bootloader používej, od toho je, aby usnadňoval práci. Pokud ho nepoužiješ, pak se to nijak neliší od běžné práce (ISP programování), včetně např. toho, že (i v tom prostředí) můžeš psát v čistém C.
Je na to Appnote.vadný ATmega 328P za novou ATmega 328PB.