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
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! Értékeléshez bejelentkezés szükséges! |
Bejelentkezés
Hirdetés |