Fórum témák

» Több friss téma
Cikkek » WILL-I THE END (robotika és AVR kezdőknek)
WILL-I THE END (robotika és AVR kezdőknek)
Szerző: Fizikus, idő: Máj 17, 2010, Olvasva: 30588, Oldal olvasási idő: kb. 1 perc
Lapozás: OK   2 / 8

Megszakítások

A megszakítás pontosan az amit a neve is mutat, a mikrovezérlőn futó program megszakítása. Hagyományosan a mikrovezérlő az utasításokat sorrendben, egymást követően hajtja végre. A mikrovezérlő lépései a főprogram által előre meghatározottak, a ciklusok és a feltételes elágazások kicsit megkavarják a folyamatot, de a mikrovezérlő lépései adottak. A mikrovezérlő egyszerre csak egy feladatot tud kezelni. A rendszer órajel felfutó élére egy új műveletet végez el.

A megszakítások olyan külső vagy belső események, amelyek a fő program folyásával/futásával nincsenek szinkronban, és amikor bekövetkeznek, az őket kiszolgáló rutinok a mikrovezérlő teljes figyelmét megkapják. Azt előre nem tudjuk hogy mikor fognak bekövetkezni a megszakítások, csak azt definiáljuk, hogy a mikrovezérlő ezeket az eseményeket hogyan szolgálja ki.

Amikor egy megszakításkérő jel érkezik, a mikrovezérlő egy előre megadott memóriahelyre ugrik, és elkezdi az ott lévő utasításokat végrehajtani (a neve megszakítás kiszolgáló rutin – Interrupt Service Routine ISR). Amikor ez a kódrészlet lefutott, a normál futás folytatódik tovább, a processzor visszamegy és folytatja azt a megkezdett feladatot, amit a megszakítás előtt végzett.
 

A megszakítások többféle különböző forrásból érkezhetnek, mindegyiket különbözőképpen kell kiszolgálni, ezért mindegyik megszakításhoz külön ISR rutin tartozik. Azért hogy a mikrovezérlő tudja hogy melyik esemény melyik ISR-t aktiválja, szükség van egy un. vektor táblára. A programszámláló (Program Counter) egy mutató, ami azt jelzi, hogy melyik a következő végrehajtandó utasítás. A Program Counter-nek is tudnia kell, hogy az egyes ISR-ek hol találhatók a program memóriában, hogy oda tudjon ugorni ha egy megszakítás érkezik.

A mikrovezérlő programmemóriáját megnézve láthatjuk, hogy mit is csinál a programszámláló amikor egy megszakításkérés érkezik. Megkeresi a vektortáblában hogy az adott megszakítás kiszolgálásához tartozó rutin (ISR) hol található, odaugrik, végrehajtja az ISR-ben lévő utasításokat, majd visszatér a főprogramhoz.

Az ATMega8-as adatlapját tanulmányozva megtalálhatjuk a megszakítás vektortáblát, a megszakításokhoz tartozó regisztereket, és azt is hogy melyek az elérhető különböző megszakítás források.
 


A cikk még nem ért véget, lapozz!
Következő: »»   2 / 8
Értékeléshez bejelentkezés szükséges!
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem