English version

Atmel AVR pro za?áte?níky 2 - P?eru?ení a binární po?ítadlo

     V minulém ?lánku o mikroprocesorech Atmel AVR jsme zatím jen blikali s LEDkami, bez mo?nosti nějak z venku ovlivnit dění v mikroprocesoru. V?echny vyvody fungovaly pouze jako vystupy, nebyl ?ádny vstup. Nyní si uká?eme, jak k mikroprocesoru p?ipojit ovládací tla?ítka a vyu?ít vyvody INTO a INT1 jako vstupy. K p?edvedení jsem vybral obvod ATmega8 (Lze pou?ít i nověj?í Atmega8A). Tla?ítka jsou p?ipojena na vyvody 4 a 5, co? jsou bity 3 a 4 portu D, ale mají i alternativní funkce - INT0 a INT1. Právě tyto alternativní funkce nás budou zajímat. Jedná se o vněj?í zdroje p?eru?ení. Pokud jsou tato p?eru?ení povolena, m??eme pomocí těchto vstup? vyvolat spu?tění p?íslu?né obslu?né rutiny. P?eru?ení INT1 se povoluje nejvy??ím bitem registru GICR. P?eru?ení INT0 se povoluje druhym nejvy??ím bitem. Povolení obou p?eru?ení tedy provedeme nastavením těchto dvou horních bit? na 1:

LDI REG,0b11000000
OUT GICR,REG

Dále musíme zvolit, na co budou vstupy reagovat. To se dělá pomocí registru MCUCR. Citlivost INT0 se volí kombinací dvou bit? - ISC01 a ISC00. Citlivost INT1 se volí bity ISC10 a ISC11. V na?em p?íkladě chceme citlivost na sestupnou hranu, a proto obě dvojice nastavíme na 1 0. To provedeme takto:

LDI REG,0b00001010
OUT MCUCR,REG

     Rozmístění bit? v registrech GICR a MCUCR zobrazuje tabulka:

     Vyznam dvojic bit? ISC01 a ISC00 nebo ISC10 a ISC11 registru MCUCR nastavujících citlivost p?eru?ení:
0 0 ... p?eru?ení p?i log 0
0 1 ... p?eru?ení jakoukoliv změnou
1 0 ... p?eru?ení sestupnou hranou
1 1 ... p?eru?ení nábě?nou hranou

Stisknutí tla?ítka nyní vyvolá spu?tění p?íslu?né obslu?né rutiny. V na?em p?íkladě se jedná o inkrementaci/dekrementaci pracovního registru REG a následné poslání na vystup, kterym je zde port C - p?esněji jeho prvních 6 bit?. Jeho stav je indikován pomocí 6 LED. Vznikne tedy binární po?ítadlo, které p?i stisku jednoho tla?ítka p?i?te 1 a p?i stisku druhého tla?ítka ode?te 1. Schéma pokusného zapojení je uvedeno ní?e. Funkci názorně ukazuje video na konci stránky. Sami jistě p?ijdete na spousty dal?ích věcí, ke kterym se tla?ítka dají vyu?ít :). Pokud zrovna nedochází k p?eru?ení, provádí se smy?ka (SMYCKA). V té zatím nic není, ale m??ete tam něco p?idat. Program je ke sta?ení ní?e. V komentá?ích zdrojového kódu programu se dozvíte dal?í u?ite?né informace.
     Cely program ke sta?ení:
Binární po?ítadlo s p?eru?ením - zdrojovy kód v assembleru (ASM)
Binární po?ítadlo s p?eru?ením - p?elo?eny v HEX souboru


Schéma zapojení ATmega8 pro pokusy s p?eru?eními. Umo?ňuje programování i testování.


Pokusny obvod v kontaktním poli.


Video - názorná ukázka funkce.


Upozornění pro lamy
Pozor! nesprávnym zapojením si m??ete po?kodit mikroprocesor, LPT port nebo cely PC.



Minuly ?lánek - Světelní hadi a Vzdu?ny displej
zpět na úvodní stránku
手机捕鱼游戏