Neretai pradedantieji ar net patyrę Atmel mikroprocesorių programuotojai susiduria su netinkamų Fuse bitų įrašymu. Po tokio įvykio mikrorocesorius pradeda veikti neteisingai ar net dar blogiau – jis apsimeta mirusiu ir programatorius jo tiesiog nemato. Taigi šiame įraše papasakosiu kaip atgaivinti mikrokontrolerius kai atsitinka tokių klaidų.
Kas tie Fusebits?
Atmel mikroprocesoriuose sritis kurioje kaupiami esminiai mikrovaldiklio startavimo parametrai vadinami Fusebits. Tai kaip kompiuterio BIOS tik čia viskas telpa į viso labo 3 baitus (arba 24 bitus). Startavimo metu mikrokontroleris nuskaito šiuos bitus ir pagal juos tęsia tolesnį savo darbą.
Pavojingiausi ir dažnai sukeliantys problemų yra šie Fuse nustatymai:
- CKSEL – nurodo kas yra mikrovaldiklio taktinio dažnio šaltinis. Šiuo atveju tai keli bitai, kurie nusako ar bus naudojamas išorinis kvarcas/rezonatorius, ar išorinis žemo dažnio kristalas, ar išorinis RC generatorius, ar vidinis RC generatorius (šis būna įjungtas vos nupirkus mikroschemą), ar atskiras išorinis signalų generatorius. Daugiau apie tai lietuviškai: http://www.dreifas.net/comment/1469. Tais atvejais bei bitai užrogramuojami neteisingai ir prie mikrovaldiklio nėra prijungtas atitinkamas taktinio dažnio šaltinis mikrovaldiklis nėra tiesiog nestartuoja.
- SPIEN – nurodo ar leistinas SPI (Serial Programing Interface). Jei ši funkcija išjungta tuomet mikrovaldiklis bus nepasiekiamas per programatorių.
- RSTDISBL – nurodo ar funkcionuoja Reset funkcija. Reset funkcija reikalinga programatoriui pradedant bendrauti su mikrovaldikliu.
- Visi kiti, kaip Brown-out detektorius ar Boot sektoriaus dydžio, parametrai nelabai įtakoja programatoriaus darbo su mikrovaldikliu.
Įvedus netinkamus tris pirmus paminėtus parametrus gręsia tikimybė, kad programuotojas nebematys mikroshemos ir nebeleis pataisyti tų pačių blogų Fuse nustatymų. Tokiu atveju gali poadėti aukštos įtampos programatoriai (HVSP ar HVPP priklausomai nuo programuojamo mikrovaldiklio) arba dar vienas toks nuostabus įrenginys, kuris automatiškai aptinka mikroschemą ir į ją įrašo pradinius (angl. default) Fusebits reikšmes. Tai atlikus su mikrovaldikliu toliau galima bendrauti per standartini SPI programatorių ir bandyti įvesti teisingus Fusebits dar kartą. Kitu atveju tektu padėti į stalčiu sugadinta mikrovaldiklį ir eiti pirkti naujo kainuojančio nuo 5 litų..
Atmega fusebit doctor
Kadangi pradėdamas programuoti Attiny2313 mikrovaldiklius kelis jų numarinau, o perėjęs prie brangesnių Atmega168 ir Atmega328 šios prabangos jau nebegaliu sau leisti, nusprendžiau pasigaminti įrenginį su kuriuo galėčiau atgaivinti pažeistus Atmel.
Taigi pasigaminau šį prietaisą:
Skaityti pilną įrašą »