Při programování Atmega8 jsem bouhužel zlovil špatné pojistky low C8 high D9.
Teď v eXtreme Burner vypisuje chybu “Cannot Communicate with Target Chip !”
Takže jsem postupoval podle cs.wikibooks.org/wiki/Programujeme_jedno%C4%8Dipy#Postup_opravy_pojistek
vše na nepajivím poli. Do “doktora” jsem nahrál program, který jsem si zkopiloval z souboru na tom webu, vše připojené, takže jsem odpojil reset, ale led blikla odhadem na 50 ms namísto jimi zmiňované 1s, nemocná atmega stále nefunovala, takže jsem do doktora nahrál soubor v hex, který je na tom webu, dioda se rozsvítí na cca 1s, ale nemocná Atmega stále nefunguje.
Problém je v tom, že netušíš, cos tam nasypal za pojistky. Co se léčby týká, můžeš mít špatný kontakt, špatně zapojené ATmegy, napětí na resetu mimo toleranci, prostě cokoliv. To, že Ti přeprogramování v bastlpoli nefunguje může mít spousu příčin.
K pojistkám - high jsi tam nasypal default a kdyby ses podíval do datasheetu, tak by jsi zjistil, že RESET sis nezablokoval. Tudíž ISP programování je stále možné.
Když se ale podíváš na low, tak zjistíš, že sis :
nastavil BODLEVEL na 2,7V
povolil BOD
Tohle je OK, jen nesmí napájecí napětí klesnout pod 2,7V, jinak se MCU drží v resetu.
nastavil startup time delay na 6 CK
S použitím BOD je to OK
nastavil systémové hodiny na External clock
To znamená, že systémové hodiny si bere z pinu XTAL1. Stačí, když si naprogramuješ tu ATmegu, co měla fungovat jako doktor, aby kmitala některým pinem a ten připojit na XTAL1 u nemocné ATmegy. Pak stačí připojit programátor a přeprogramovat pojistky tak, aby běžena na IntRC a máš opraveno.
Ale tohle všechno by ses dozvěděl, kdyby sis DŮKLADNĚ prošel datasheet od ATmega8.