programiranje kako oživeti mikrokontrolerje avr (3)

9
SVET ELEKTRONIKE 33 10_2014 PROGRAMIRANJE Takšen mikrokontroler postane »mrtev« in ga ni mogo- če več programirati niti brisati z ISP programatorji, ki jih običajno uporabljamo (Proggy, USBasp, Sample electro- nics, STK500...). Vendar je mogoče večino takšnih mikro- kontrolerjev ponovno oživeti, če jim fuse bite nastavimo v standardno (privzeto) kombinacijo. Za takšno delo pa potrebujemo programator, ki omogoča postopek visoko- napetostnega programiranja mikrokontrolerjev. Vse AVR mikrokontrolerje je mogoče programirati na ta način: najprej se na Vcc priključek mikrokontrolerja priključi na- pajanje 5 V, potem pa na reset priključek pripeljemo »viso- ko napetost« 12 V. Takoj zatem se med programatorjem in mikrokontrolerjem vzpostavi serijska (pri manjših izvedbah mikrokontrolerjev, 8 in 14-pinskih ohišjih) ali paralelna ko- munikacija (pri mikrokontrolerjih v večjih ohišjih). Obsta- jata dva protokola za vzpostavitev paralelne komunikacije, ki je odvisna od vrste mikrokontrolerja, ki ga želimo oživeti. V skladu s temi zahtevami smo leta 2009 razvili napravo za oživljanje mikrokontrolerjev, ki je delovala kot dodatek našim razvojnim sistemom MiniPin in MegaPin (slika 9). V osnovi je ta naprava le tiskano vezje z več različnimi pod- nožji, v katera se v odvisnosti od izvedbe ohišja namestimo mikrokontroler, ki ga je potrebno oživeti, poleg podnožij pa je na ploščici še DC-DC pretvornik iz 5 V na 12 V, ne- kaj drugih elektronskih elementov in konektorji. Krmiljenje Kako oživeti mikrokontrolerje AVR (3) Avtor: mag. Vladimir Mitrović Avtor: mag. Vladimir Mitrović Proti koncu leta 2009 smo v revijah SE številka 169 in 170 objavili shemo naprave, ki lahko »oživi« AVR mi- krokontrolerje v primerih, ko jih na običajen način ni več mogoče programirati. Problem največkrat nastane takrat, ko nepazljivo sprogramiramo takšno kombinacijo fuse bitov, ki serijskem ISP programatorju ne dovoli več dostopa do mikrokontrolerja. Enako se lahko zgodi tudi med čisto »običajnim« programiranjem, če kakšna motnja zmoti normalno komunikacijo med programatorjem in mikrokontrolerjem. Slika 9: Fotografija programatorja iz leta 2009 in novega modela 2014 delovanja tega vezja izvaja mikrokontroler ATmega8515 ali kakšen podoben, ki se sicer nahaja na razvojni ploščici Mi- niPin ali MegaPin. S tipkami, LCD prikazovalnikom in inte- raktivnim programom izberemo vrsto mikrokontrolerja, ki ga želimo oživeti in ukaz, ki naj bi se izvedel. Več podrobnosti o načinu delovanja in uporabi programa boste našli v omenjenih člankih. Leta so tekla in »obuje- valec« nas je navduševal z možnostjo oživljanja »umrlih« mikrokontrolerjev - osebno nisem naletel niti na enega takšnega, ki ga ne bi bilo mogoče oživeti. To nas je spodbu- dilo k razmišljanju o tem, da bi ga morda lahko predelali v samostojno napravo. V ta namen smo na prvotno ploščico tiskanega vezja za oživljanje dodali še krmilni mikrokontro- ler, štiri tipke (TP1-TP4), signalno LED diodo LED1 in ko- nektor za priključitev alfanumeričnega LCD prikazovalnika z 2x16 znaki (slika 10). Odločili smo se za bolj zmogljiv mikrokontroler, ATme- ga162, saj je v ATmega8515 zmanjkalo prostora za pro- gramske izboljšave. Dodali smo še USB konektor, prek ka- terega se celotna naprava napaja iz USB vodila osebnega računalnika (ne potrebuje drugega vira napajanja) ter in- tegrirano vezje FT230 za ponovno programiranje krmil- nega mikrokontrolerja prek bootloaderja. Ko smo začeli s to predelavo starega izdelka nam je bila prvotna zamisel

Upload: others

Post on 18-Oct-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PROGRAMIRANJE Kako oživeti mikrokontrolerje AVR (3)

SVET ELEKTRONIKE 33 10_2014

PROGRAMIRANJE

Takšen mikrokontroler postane »mrtev« in ga ni mogo-če več programirati niti brisati z ISP programatorji, ki jih običajno uporabljamo (Proggy, USBasp, Sample electro-nics, STK500...). Vendar je mogoče večino takšnih mikro-kontrolerjev ponovno oživeti, če jim fuse bite nastavimo v standardno (privzeto) kombinacijo. Za takšno delo pa potrebujemo programator, ki omogoča postopek visoko-napetostnega programiranja mikrokontrolerjev. Vse AVR mikrokontrolerje je mogoče programirati na ta način: najprej se na Vcc priključek mikrokontrolerja priključi na-pajanje 5 V, potem pa na reset priključek pripeljemo »viso-ko napetost« 12 V. Takoj zatem se med programatorjem in mikrokontrolerjem vzpostavi serijska (pri manjših izvedbah mikrokontrolerjev, 8 in 14-pinskih ohišjih) ali paralelna ko-munikacija (pri mikrokontrolerjih v večjih ohišjih). Obsta-jata dva protokola za vzpostavitev paralelne komunikacije, ki je odvisna od vrste mikrokontrolerja, ki ga želimo oživeti.

V skladu s temi zahtevami smo leta 2009 razvili napravo za oživljanje mikrokontrolerjev, ki je delovala kot dodatek našim razvojnim sistemom MiniPin in MegaPin (slika 9). V osnovi je ta naprava le tiskano vezje z več različnimi pod-nožji, v katera se v odvisnosti od izvedbe ohišja namestimo mikrokontroler, ki ga je potrebno oživeti, poleg podnožij pa je na ploščici še DC-DC pretvornik iz 5 V na 12 V, ne-kaj drugih elektronskih elementov in konektorji. Krmiljenje

Kako oživeti mikrokontrolerje AVR (3)Avtor: mag. Vladimir MitrovićAvtor: mag. Vladimir Mitrović

Proti koncu leta 2009 smo v revijah SE številka 169 in 170 objavili shemo naprave, ki lahko »oživi« AVR mi-krokontrolerje v primerih, ko jih na običajen način ni več mogoče programirati. Problem največkrat nastane takrat, ko nepazljivo sprogramiramo takšno kombinacijo fuse bitov, ki serijskem ISP programatorju ne dovoli več dostopa do mikrokontrolerja. Enako se lahko zgodi tudi med čisto »običajnim« programiranjem, če kakšna motnja zmoti normalno komunikacijo med programatorjem in mikrokontrolerjem.

Slika 9: Fotografija programatorja iz leta 2009 in novega modela 2014

delovanja tega vezja izvaja mikrokontroler ATmega8515 ali kakšen podoben, ki se sicer nahaja na razvojni ploščici Mi-niPin ali MegaPin. S tipkami, LCD prikazovalnikom in inte-raktivnim programom izberemo vrsto mikrokontrolerja, ki ga želimo oživeti in ukaz, ki naj bi se izvedel.

Več podrobnosti o načinu delovanja in uporabi programa boste našli v omenjenih člankih. Leta so tekla in »obuje-valec« nas je navduševal z možnostjo oživljanja »umrlih« mikrokontrolerjev - osebno nisem naletel niti na enega takšnega, ki ga ne bi bilo mogoče oživeti. To nas je spodbu-dilo k razmišljanju o tem, da bi ga morda lahko predelali v samostojno napravo. V ta namen smo na prvotno ploščico tiskanega vezja za oživljanje dodali še krmilni mikrokontro-ler, štiri tipke (TP1-TP4), signalno LED diodo LED1 in ko-nektor za priključitev alfanumeričnega LCD prikazovalnika z 2x16 znaki (slika 10).

Odločili smo se za bolj zmogljiv mikrokontroler, ATme-ga162, saj je v ATmega8515 zmanjkalo prostora za pro-gramske izboljšave. Dodali smo še USB konektor, prek ka-terega se celotna naprava napaja iz USB vodila osebnega računalnika (ne potrebuje drugega vira napajanja) ter in-tegrirano vezje FT230 za ponovno programiranje krmil-nega mikrokontrolerja prek bootloaderja. Ko smo začeli s to predelavo starega izdelka nam je bila prvotna zamisel

Page 2: PROGRAMIRANJE Kako oživeti mikrokontrolerje AVR (3)

34 SVET ELEKTRONIKE 10_2014

ponuditi res majhen izdelek, ki bi znal samodejno „oživeti“ mikrokontroler na podlagi njegovega prebranega podpisa (signature). Za takšno delovanje bi bila povsem dovolj le ena tipka (TP4) in ena LED dioda (LED1). Kasneje smo se vseeno odločili zadržati in celo izboljšati obstoječe funkcije starega interaktivnega programa, za kar je bilo seveda pot-rebnih več tipk (TP1-TP4) in LCD prikazovalnik. Uporaba mikrokontrolerja z več programskega pomnilnika nam je omogočila tudi to, da smo vanj istočasno lahko shranili oba programa, uporabnik pa lahko s kratkostičnikom J1 določi, katera različica naj se izvaja.

V nadaljevanju bomo natančno opisali delo z napravo za oživljanje mikrokontrolerjev. Ne bomo opisovali samega programa, zato za bolj podrobna pojasnila o načelih nje-govega delovanja bralce ponovno opozarjam na vsebino omenjenih člankov. Vsekakor pa si moramo ogledati raz-poreditev komponent na ploščici tiskanega vezja; razpo-

red ključnih komponent je prikazan na sliki 11. Podnožja, označena s predznakom DIP, so namenjena priključitvi mikrokontrolerjev, ki naj bi jih „oživeli“. Za 20-pinske in 40-pinske mikrokontrolerje sta predvideni po dve podnož-ji, DIP20A in DIP20B ter DIP40A ir DIP40B. V podnožji z oznako A se priključijo mikrokontrolerji, ki imajo priključke za napajanje nameščene diagonalno (priključka 20 in 10, oziroma 40 in 20). V podnožji z oznako B lahko namestimo tiste mikrokontrolerje, ki imajo priključke za napajanje na-meščene na sredini (5,6 in15,16, oziroma 10,11 in 30,31). Pri podnožjih DIP8, DIP14 in DIP28 glede priključitve ne bi smelo biti dvoma.

Mikrokontroler z oznako IC3 krmili delovanje naprave za oživljanje. S kratkostičnikom J1 izberemo različico progra-ma ki ga želimo uporabljati:» če sta priključka J1 brez kratkostičnika, se bo izvaja-

la različica programa 2.0, ki kot tipko za začetek po-

Slika 10: Shema novega krmilnega vezja.Slik 10 Sh k il j

PROGRAMIRANJE

Page 3: PROGRAMIRANJE Kako oživeti mikrokontrolerje AVR (3)

SVET ELEKTRONIKE 35 10_2014

stopka oživljanja uporablja tipko TP4, konec postopka oživljanja pa signalizira z utripanjem LED diode LED1;

» če je kratkostičnik na priključkih J1 nameščen, se bo izvajala različica programa 1.2, ki je precej izboljšan interaktivni program, pri katerem uporabljamo tipke TP1-TP4 in se obvestila prikazujejo na alfanumeričnem LCD prikazovalniku (pri priključitvi LCD prikazovalnika pazimo na njegovo orientacijo!).

Naprava nima zaščite proti tema napakama uporabnika, zato je povsem mogoče, da bi na ta način lahko trajno poš-kodovali nameščen mikrokontroler.

Navodila za uporabo samodejnega

programa (v2.0)Ta različica programa se izvaja takrat, kadar kratkostičnik na priključkih J1 ni nameščen. Program uporablja tipko TP4 in LED diodo LED1; mogoča je uporaba LCD prika-zovalnika, ni pa to pogoj za pravilno delovanje. Če je LCD zaslon priključen, se bo na njem za kratek čas izpisalo spo-ročilo, ki ga vidimo na sliki 12a, potem pa še sporočilo s slike 12b. Istočasno z izpisom sporočila na sliki 12b se bo prižgala tudi LED dioda z oznako LED1. Mikrokontroler, ki ga želimo oživeti, lahko povsem varno namestimo v pod-nožje in ga iz njega odstranimo dokler LED1 trajno sveti, oziroma dokler se na LCD ekranu prikazuje sporočilo s sli-ke 12b.

Mikrokontroler se namesti v ustrezno podnožje (glej sliko 11), zatem pa se pritisne tipka TP4. Program bo posku-sil prebrati digitalni podpis (signature) mikrokontrolerja s pomočjo treh znanih postopkov in po vsakem branju pre-veril, če v interni tabeli obstaja mikrokontroler s takšnim podpisom. Če ga najde, bo iz tabele prebral tudi privzete (default) vrednosti fuse bitov in jih vpisal v mikrokontroler. Po vpisu se preverijo vrednosti oziroma vsebina vpisanih bitov. Uspešnost postopka programiranja se signalizira z utripanjem diode LED1 in kot izpis na LCD displeju (če je priključen).

Mogoči so naslednji scenariji:» Če digitalni podpis ni bil uspešno prebran ali v tabeli ne

Slika 11: Razpored glavnih komponent na novem tiskanem vezju

p j g j ) pTanaTPzozarosliprganoozke

M11sil povepo(dePobitutpr

Slika 11: Razpored glavnih komponent na novem tiskanem vezju

TnTzzrspgnok

M1spvp(Pbup

Pri obeh različicah programa velja isto pravilo: mikro-kontroler, ki ga oživljamo se sme nameščati v podnožje in odstranjevati iz njega tudi takrat, ko je naprava priključe-na na napajanje. Sam mikrokontroler je sicer priključen na napajalno napetost samo takrat, ko pritisnemo tipko za začetek delovanja (oživljanja), označeno s TP4. Takoj, ko se na LCD zaslonu izpiše sporočilo o uspešnem ali morda neuspešnem programiranju ali nam enako sporoči LED1 v obliki utripanja, lahko mikrokontroler brez skrbi vzamemo iz podnožja.

Paziti pa moramo na dvoje:» na orientacijo podnožja, saj vsa podnožja niso enako

obrnjena ter» istočasno je v podnožja lahko nameščen le en mikro-

kontroler. Slika 12: Sporočila na LCD ekranu med izvajanjem provrama, različice v2.0

Če digitalni podpis ni bil uspešno prebran ali v tabeli ne»»

ro-inče-nazakoda1 vmo

ko

ro- Slika 12: Sporočila na LCD ekranu med izvajanjem provrama, različice

-n -aao a v o

o

PROGRAMIRANJE

Page 4: PROGRAMIRANJE Kako oživeti mikrokontrolerje AVR (3)

36 SVET ELEKTRONIKE 10_2014

obstaja mikrokontroler s takšnim podpisom, ki ustrezal vsaj enemu od treh različnih načinov branja (program ne loči teh načinov med sabo), se bo izpisalo sporočilo s slike 12c, LED dioda pa bo dvakrat utripnila.

» Če je podpis uspešno prebran in je program v tabeli na-šel ustrezen mikrokontroler, poleg tega pa so bili tudi fuse biti uspešno vpisani (mikrokontroler je obujen), se bo na LCD zaslonu izpisalo sporočilo, podobno tiste-mu, ki ga vidimo na sliki 12d, LED1 pa se bo prižgala in potem ugasnila (vsako od teh dveh stanj bo trajalo po 2 sekundi).

» Če je podpis uspešno prebran in je program v tabeli našel ustrezen mikrokontroler, vendar fuse biti niso bili uspešno vpisani (mikrokontroler je poškodovan), se bo na ekranu izpisalo podobno sporočilo, kot ga vidimo na sliki 12e, LED1 pa bo štirikrat hitro utripnila.

V vseh primerih pa se bo po preteku dveh sekund LED1 trajno prižgala, na LCD ekranu pa se bo ponovno izpisalo sporočilo 12b; to je tudi trenutek, ko lahko varno odstrani-mo mikrokontroler iz podnožja ali ga zamenjamo z drugim.

Navodilo za uporabo interaktivnega

programa (v1.2)Ta različica programa se izvaja takrat, kadar je kratkostič-nik nameščen na priključka J1 . V programu se uporablja-jo tipke TP1-TP4 in LCD zaslon. Na zaslonu se bo najprej za kratek čas izpisalo sporočilo, ki ga vidimo na sliki 13a, zatem pa se bodo menjala sporočila s slik 13b-13e kot ne-kakšna kratka navodila, kaj pomeni posamezna tipka. Po pritisku katerekoli tipke vstopimo v interaktivni način delo-vanja, v katerem izbiramo podnožje, vrsto mikrokontroler-ja in ukaz, ki ga želimo izvesti.

Alfanumerični prikazovalnik je razdeljen na štiri področja (slika 14): » zgoraj levo je izpisano trenutno izbrano podnožje, » zgoraj desno je izpisana oznaka trenutno izbranega mi-

krokontrolerja, » spodaj levo je izpisan eden izmed razpoložljivih ukazov, » spodaj desno so izpisani rezultat izvedenega ukaza ali

kakšni drugi podatki.

Če vzamemo konkretni primer, je na sliki 14 izbran mikro-kontroler ATtiny2313 v podnožju DIP20A, izvedel se je ukaz »Read«, prebrani fuse biti pa so izpisani v heksadecimalni obliki.

Tipke TP1-TP4 uporabljamo takole:» 1. korak: izbira podnožja (TP1)

◊ Za izbiro podnožja uporabimo tipko TP1 (slika 15). Izberemo lahko eno od sedmih razpoložljivih pod-nožij (DIP40A, DIP40B, DIP28, DIP20A, DIP20B, DIP14 in DIP8, slike 15b-15h) ali samodejno pre-poznavanje mikrokontrolerja (auto select uC, slika 15a).

» 2. korak: izbira mikrokontrolerja (TP2)◊ Za vsako izbrano podnožje se izpiše prvi mikro-

kontroler s spiska, ki ima ustrezno število in razpo-reditev priključkov. S pritiski na tipko TP2 izbiramo naslednji mikrokontroler s tega spiska. Program trenutno podpira 30 AVR mikrokontrolerjev; s tipko TP2 je mogoča izbira le tistih mikrokontrolerjev, ki

PROGRAMIRANJE

Slika 13: Izpisi na LCD ekranu med izvajanjem različice v1.2

Slika 14: Prikaz podatkov na alfanumeričnem prikazovalniku

»

Slika 13: Izpisi na LCD ekranu med izvajanjem različice v1.2

»

in po

elbilbo

mo

D1aloni-m.

Slika 14: Prikaz podatkov na alfanumeričnem prikazovalniku

o

ii

o o

o-.

Slika 16: S tipko TP2 izberemo mikrokontroler

TP2 je mogoča izbira le tistih mikrokontrolerjev, ki

Slika 16: S tipko TP2 izberemo mikrokontrolerSlik

j g j ,

Page 5: PROGRAMIRANJE Kako oživeti mikrokontrolerje AVR (3)

SVET ELEKTRONIKE 37 10_2014

imajo ustrezen razpored priključkov za izbrano pod-nožje. Slika 16 prikazuje mikrokontrolerje, ki imajo podnožje vrste DIP20A.

auto select uC◊ Kadar v prvem koraku izberemo možnost »Auto

select uC«, bo program po pritisku na tipko TP4 prebral digitalni podpis priključenega mikrokontro-lerja in če ga bo prepoznal, bo samodejno določil in izpisal podnožje in njegovo oznako. V tem primeru bomo preskočili drugi korak.

» 3. korak: izbira ukaza (TP3)◊ Potem, ko ročno ali s samodejnim prepoznavanjem

izberemo mikrokontroler, se moramo odločiti, kaj želimo z njim početi. Na razpolago imamo štiri uka-ze - Read, Write, Edit in Erase – ki jih izbiramo s tipko TP3 (slika 17).

» ??◊ opozorilo za izbiro (opozarja, da je treba izbrati

enega izmed ukazov)» Read

◊ prebere fuse bite in jih izpiše na ekranu» Write

◊ v mikrokontroler vpiše privzete (default) vrednosti fuse bitov

» Edit◊ omogoča vnos poljubne kombinacije fuse bitov in

njihov vpis v mikrokontroler» Erase

◊ briše lock bite

Pri ukazih Write in Edit se izpišejo privzete vrednosti fusebitov v heksadecimalni obliki.

» 4. korak: izvedba ukaza (TP4)◊ Izbran ukaz izvedemo s pritiskom na tipko TP4. Re-

zultat izvedenega ukaza se izpiše na ekranu, potem pa nas program vrne na izbiro mikrokontrolerja (iz-jema je ukaz Edit, ki ima še svoje podmenije).

Med izbiro podnožja, mikrokontrolerja in ukaza so vsi priključki v breznapetostnem stanju in mikrokontroler lah-ko brez nevarnosti namestimo v ustrezno podnožje. Šele

PROGRAMIRANJE

»

»

Prbit

PROGRAMIRANJEJ

»

»

PSlika 15: S tipko TP1 izberemo podnožje

Slika 17: S tipko TP3 izberemo ukazika 17: S tipko TP3 izberemo ukazSlikS

inru

emkajka-

s

at

ko brez nevarnosti namestimo v ustrezno podnožje. Šelenu

m j-s

i

ko brez nevarnosti namestimo v ustrezno podnožje. Šele

Page 6: PROGRAMIRANJE Kako oživeti mikrokontrolerje AVR (3)

38 SVET ELEKTRONIKE 10_2014

po pritisku na tipko TP4 program za kratek čas generira napetosti in signale za programiranje, mikrokontroler pa lahko spet brez nevarnosti odstranimo iz podnožja takrat, ko se kot izbran ukaz na ekranu spet izpiše »??«.

UkaziRead (slika 18)Program prebere fuse bajte priključenega mikrokontroler-ja in jih izpiše v heksadecimalni obliki po vrstnem redu low, high, extended. Program točno ve, koliko fuse bajtov ima posamezni mikrokontroler, zato prebere in prikaže samo tiste, ki res obstajajo. Izpis ostane zapisan na ekranu štiri sekunde, potem pa se spodnja vrstica izbriše in program pričakuje izbiro novega ukaza (»??«).

Write (slika 19)Po izbiri tega ukaza se v desni polovici spodnje vrstice ekrana izpišejo privzete (default) vrednosti fuse bajtov za izbrani mikrokontroler (slika 19a). Vrednosti se izpišejo v heksadecimalni obliki po vrstnem redu low, high, extended. Po izvedbi ukaza (TP4) se v desni polovici spodnje vrstice ekrana izpiše status te operacije, ki je lahko »OK« (ukaz se je uspešno izvedel, slika 19b) ali »Error xx« (napaka, slika 19c). »xx« je heksadecimalni zapis oznake napake, pri kate-ri imajo postavljeni biti naslednji pomen:» bit 0 napaka strojne opreme (ni mikrokontrolerja?)» bit 1 napačno vpisan low bajt» bit 2 napačno vpisan high bajt» bit 3 napačno vpisan extended bajt

Napaka vpisa se lahko pojavi tudi v primerih, ko s tipka-ma TP1/TP2 izberemo napačni mikrokontroler ali kadar je mikrokontroler zaklenjen z lock biti. Izpis se na ekranu

PROGRAMIRANJE

prikazuje štiri sekunde, potem pa se spodnja vrstica ekrana izbriše in program pričakuje izbiro novega ukaza (»??«).

Edit (slika 20)Ta ukaz omogoča vpis poljubne kombinacije fuse bitov. Z izbiro tega ukaza se v desni polovici spodnje vrstice ekra-na izpišejo privzete (default) vrednosti fuse bajtov za izbrani mikrokontroler (slika 20a). Vrednosti se izpišejo v heksa-decimalni obliki po vrstnem redu low, high, extended. Po izvedbi ukaza (TP4) se pod prvim heksadecimalnim zna-kom (številko) pojavi utripajoči kazalec, ki označuje, da lahko ta znak (heksadecimalno številko) spreminjamo. S tipkama TP1 in TP2 premikamo kazalec na prejšnjo oziro-ma naslednjo številko. S tipko TP3 spreminjamo vrednost izbrane številke (na sliki 20b, »4« je spremenjena v »5«). Ko nastavimo ustrezno kombinacijo vseh fuse bitov, jih s pritiskom na TP4 vpišemo v mikrokontroler in izstopimo iz Edit načina delovanja. Sporočila po izvedbi ukaza so enaka sporočilom po izvedbi Write ukaza (slike 20c i 20d).

Pozor! Pri nekaterih mikrokontrolerjih nekaterih bitov znotraj fuse bajta ni mogoče programirati. Največkrat bo takšen bit samo ostal nesprogramiran (»1«), kar bo povzročilo izpis sporočila o napaki, vendar na mikrokon-trolerju ne bo pustilo trajnih posledic. S ponovnim branjem lahko preverimo, kateri biti so bili uspešno sprogramirani. V določenih primerih pa lahko poskus programiranja ne-obstoječih bitov povzroči tudi uničenje mikrokontrolerja. Zato vam svetujem, da pred uporabo ukaza Edit pogledate v tehnično dokumentacijo uporabljenega mikrokontrolerja in preverite, katerih fuse bitov ni mogoče programirati.

Opomba: Edit način delovanja lahko prekinete s ponovnim zagonom krmilnega programa (reset).

Erase (slika 21)Ta ukaz izbriše lock bite. Ta ukaz je potrebno izvesti, če je pro-gramski pomnilnik mikrokontrolerja zaklenjen, kar onemo-goča tudi programiranje fuse bitov. Pozor: razen lock bitov

pričakuje izbiro novega ukaza (»??«). izbKoprEdsp

Poznbopo

KpEs

Pzb

je mikrokontroler zaklenjen z lock biti. Izpis se na ekrank

Ok

ErrTagrago

j j p

ETgg

cesekate-

ka-ar

in preverite, katerih fuse bitov ni mogoče programirati.

nu

ea-

-r

p , f g p g

u

Slika 18: Ilustracija ukaza Read

Slika 19: Ilustracija ukaza Write

Slika 20: Ilustracija ukaza Edit

Page 7: PROGRAMIRANJE Kako oživeti mikrokontrolerje AVR (3)

SVET ELEKTRONIKE 39 10_2014

PROGRAMIRANJE

ta ukaz izbriše tudi programski pomnilnik mikrokontroler-ja! Po izvedbi tega ukaza (TP4) se v desni polovici spodnje vrstice izpiše status operacije, ki je lahko »OK« (ukaz je bil uspešno izveden, slika 21b) ali »Error 01« (napaka; verje-tno je izbran napačni mikrokontroler ali pa mikrokontroler sploh ni priključen, slika 21c). Izpis se na ekranu prikazuje štiri sekunde, potem pa se spodnja vrstica ekrana izbriše in program pričakuje izbiro novega ukaza (»??«).

Izpis na ekranu po izvedbi vsakega ukaza lahko prekinemo (skrajšamo) s pritiskom na katerokoli od tipk TP1 - TP4.

Prilagoditve programaProgram » Fuses_AVR_signature« podpira okrog trideset aktualnih ATmega in ATtiny mikrokontrolerjev v DIP ohi-šjih. Podpiral bo tudi vse nove AVR-je, ki bodo glede na svoje priključke združljivi z obstoječimi in ki bodo podpi-rali enake ali vsaj podobne postopke programiranja. Nove AVR-je boste lahko programirali na enega od naslednjih načinov:

» Kukavičje jajce◊ (bez sprememb v programu, le z različico v1.2)

Če je novi mikrokontroler glede na razpored priključk-ov združljiv s katerim od že podprtih mikrokontrolerjev, podpira enak po-stopek visokonapetostnega programi-ranja in ima enako število fuse bajtov (preverite v data-sheet-u), ga namestite v programator in sprogramirajte po obstoječem postopku. Če se pomen ali vsebina posameznih fuse bitov razliku-je, uporabite ukaz Edit.

» Programiranje mikrokontrolerja brez oznake◊ (bez sprememb v programu, le z

različico v1.2)

Možnost programiranja mikrokontro-lerja brez oznake aktiviramo tako, da najprej s tipko TP1 izberemo ustrezno

podnožje, potem pa med izbiro mikrokontrolerja držimo tipko TP2 pritisnjeno več kot tri sekunde. Takrat se bo v desni polovici zgornje vrstice ekrana namesto oznake mi-krokontrolerja izpisalo »LO HI EX« (slika 22a).

S tem smo izbrali katerikoli mikrokontroler, ki mu ustreza DIP20A podnožje in ki ima tri fuse bajte. Če držimo tip-ko TP2 pritisnjeno še naprej, se bo spreminjalo število fusebajtov (slika 22a -> slika 22b -> slika 22 c -> slika 22a). Ko dosežemo želeno število fuse bajtov, tipko TP2 spustimo. Potem s tipko TP3 izberemo ustrezen ukaz. Ukaz Read bo prebral izbrano število fuse bajtov in jih prikazal na ekra-nu (slika 22d). Ukaz Write bi postavil vse fuse bite v stanje »1« (slika 22e), zato je bolj smiselno izvesti ukaz Edit. Tudi

Slika 21: Ilustracija ukaza Erase

(skrajšamo) s pritiskom na katerokoli od tipk TP1 - TP4.

Slika 21: Ilustracija ukaza Erase

(skrajšamo) s pritiskom na katerokoli od tipk TP1 TP4.

Slika 21: Ilustracija ukaza Erase

er-njebije-lerujein

mo

-e l -r e n

o

Slika 22: Programiranje neznanega mikrokontrolerja

na razpored priključkrtih pomitotitpoa

ku

erja

le

rod

zno

»1« (slika 22e), zato je bolj smiselno izvesti ukaz Edit. Tudih

o-i-

ov te oli

u-

a

z

o-a o

Page 8: PROGRAMIRANJE Kako oživeti mikrokontrolerje AVR (3)

40 SVET ELEKTRONIKE 10_2014

[email protected]: 01 705 05 00f: 01 70 50 505

www.lingva.si

Podskrajnik 35, 1380 Cerknica

PROGRAMIRANJE

tukaj so privzete vrednosti vseh fuse bitov »1« (niso spro-gramirani, slika 22f), seveda pa jih lahko poljubno spre-menimo.

» Vpis novega mikrokontrolerja v program◊ (manjša sprememba v programu, obe različici pro-

grama)

Če bi želeli trajno vgraditi možnost oživljanja kakšnih no-vih mikrokontrolerjev, je potrebno nekoliko spremeniti kr-milni program programatorja, »Fuses_AVR_signature«. V uredništvu ga lahko dobite kot izvorno kodo v Bascomu (.bas) in v prevedeni obliki (.hex, .bin). Program je daljši od 4 kB, zato ga ni mogoče prevesti z demo različico progra-ma BascomAVR, ampak boste za prevajanje potrebovali licenčnega!

Podatki o vseh mikrokontrolerjih, ki jih program podpira, se nahajajo v tabeli »Uc« na koncu programa. Podatki za vsak posamezni mikrokontroler so vpisani v eno Data vrsti-co te tabele, na primer:

Data 4 , 2 , 3 , &B01100100 , &B11011111 , &B11111111 , &H1E , &H91 , &H0A , »Tiny2313«

Prvi podatek, v našem primeru »4«, določa podnožje mi-krokontrolerja. Vsa podnožja, ki jih lahko iz seznama izbe-remo, so zapisana v tabeli »Dip«:

Dip: 'spisek podnožijData »auto select uC?«Data »DIP40A«Data »DIP40B«Data »DIP28«Data »DIP20A«Data »DIP20B«Data »DIP14«Data »DIP8«Data »*«

Prvi vrstici tabele »Dip« pripada indeks 0, zato bi v našem primeru indeks 4 ustrezal podnožju »DIP20A«.

Drugi podatek, »2«, določa postopek programiranja. Pro-gram podpira 3 različne postopke: » 1, paralelno programiranje ATmega čipov (velja za vse

ATmega čipe), » 2, paralelno programiranje ATtiny čipov (velja za

20-pinske ATtiny čipe) i » 3, serijsko programiranje ATtiny čipova (velja za 8- in

14-pinske ATtiny čipe).

Tretji podatek, »3«, pomeni koliko fuse bajtov ima mikro-kontroler; v našem primeru bi imel vse tri bajte: low, high in extended.

Naslednji trije bajti, ki so definirani v obliki binarnih nizov, so privzete vrednosti fuse bajtov. Vrstni red je low, high in extended. Vpisane so privzete vrednosti na podlagi podat-kov iz tehnične dokumentacije tega mikrokontrolerja. Ne glede na to, koliko fuse bajtov nek mikrokontroler res ima, je potrebno vedno vpisati vse tri bajte (bajti, ki ne obstaja-jo, se zapolnijo z nizom enic). Sledijo trije bajti v heksade-cimalnem zapisu, ki predstavljajo digitalni potpis (signatu-re) mikrokontrolerja. Zadnji alfanumerični niz predstavlja oznako mikrokontrolerja. Ta niz je lahko dolg od enega do devet znakov. Pri vpisu novega mikrokontrolerja v tabelo »Uc« ne smemo pokvariti njene strukture. Prva vrstica v ta-beli je »Data 0«, zadnja pa »Data 255 , 0«. Vsi podatki o mikrokontrolerjih se nahajajo med tema dvema ukazoma:

Uc:Data 0 'obvezna vsebina prve vrstice Data ... 'tu so vpisani podatki...Data ... '...o mikrokontrolerjihData 255, 0 'obvezna vsebina zadnje vrstice

Vrstico za nov mikrokontroler lahko dodamo kjerkoli znot-raj »Uc« tabele, za vrstico »Data 0« in pred vrstico »Data 255 , 0«. Položaj nove vrstice v primerjavi z ostalimi določa vrstni red, po katerem se bo oznaka novega mikrokontro-lerja izpisala na ekranu, ko bomo pritiskali tipko TP2. Niti eden od bajtov v opisu mikrokontrolerja ne sme biti enak 0 (&B00000000, &H00), saj bi to zmotilo preiskovanje tabele!

Po spremembi izvornega programa ta program shranimo in na novo prevedemo, potem pa vpišemo v mikrokontroler. Če ima vaša naprava za za oživljanje mikrokontrolerjev vgra-jen FT230 čip in če uporabljate originalni ATmega162 mi-krokontroler, v katerega smo v uredništvu vpisali bootloader in ustrezno nastavili fuse bite, potem zadostuje, da napravo povežete prek USB kabla z osebnim računalnikom in mikro-kontroler preprogramirate prek bootloaderja. Če ste upora-bili »prazen« ATmega162, ga boste morali sprogramirati s primernim programatorjem. Fuse bite morate nastaviti tako, da bo mikrokontroler uporabljal zunanji kvarc kristal fre-kvence 8 MHz (nahaja se na tiskanem vezju). Pravilne vred-nosti so CKSEL3:0 = 1111, SUT1:0 = 11, oziroma Fuse Low Byte = 01111111 (binarno) = 7F (heksadecimalno).

www.svet-el.siwww.svet-el.si

Page 9: PROGRAMIRANJE Kako oživeti mikrokontrolerje AVR (3)

22uF

10k

22uF

10k 10k

10k

22uF