Intreruperi.
Întreruperea reprezintă suspendarea procesului normal de execuţie a programului pentru rezolvarea unei probleme prioritare.
Întreruperea de regulă este generată ca răspuns la un efect fizic intern sau extern al unui modul periferic. Efectul fizic în sine va reprezenta situaţia de întrerupere sau excepţie care necesită o tratare neintârziată. Asemenea situaţii de întreruperi pot fi ca de exemplu: schimbarea nivelului logic la un pin, sfârşitul unei perioade de timp sfârşitul unei operaţii de transmisie sau recepţie, sfârşitul unei conversii etc.
Majoritatea modulelor periferice pot genera una sau mai multe întreruperi.
Tratarea situaţiei de întrerupere presupune existenţa unei subrutine definite în acest scop. Odată cu apariţia situaţiei de întrerupere, microcontrollerul va seta într-un registru de stare a perifericului un flag de întrerupere IF, care va fi pastrat pâna la prelucrarea intreruperii date. Pentru ca întreruperea de la situaţia de întrerupere să fie generată va fi nevoie ca în registrul de control al perifericului întreruperea în cauză să fie activată prin setarea unui bit de activare IE. Mecanismul de chemare a subrutinei de prelucrare a întreruperii va fi iniţiat doar în cazul în care:
Sistemul de întreruperi, de exemplu, va permite un apel de subrutină automat la apăsarea unui buton, luat ca sursă de întrerupere externă EXT_INT.
Întreruperea de regulă este generată ca răspuns la un efect fizic intern sau extern al unui modul periferic. Efectul fizic în sine va reprezenta situaţia de întrerupere sau excepţie care necesită o tratare neintârziată. Asemenea situaţii de întreruperi pot fi ca de exemplu: schimbarea nivelului logic la un pin, sfârşitul unei perioade de timp sfârşitul unei operaţii de transmisie sau recepţie, sfârşitul unei conversii etc.
Majoritatea modulelor periferice pot genera una sau mai multe întreruperi.
Tratarea situaţiei de întrerupere presupune existenţa unei subrutine definite în acest scop. Odată cu apariţia situaţiei de întrerupere, microcontrollerul va seta într-un registru de stare a perifericului un flag de întrerupere IF, care va fi pastrat pâna la prelucrarea intreruperii date. Pentru ca întreruperea de la situaţia de întrerupere să fie generată va fi nevoie ca în registrul de control al perifericului întreruperea în cauză să fie activată prin setarea unui bit de activare IE. Mecanismul de chemare a subrutinei de prelucrare a întreruperii va fi iniţiat doar în cazul în care:
- S-a detectat situaţia de întrerupere reprezentată de flagul acesteia IF==1
- Întreruperea de la sursa dată este permisa IE ==1
- Bitul de permisiune globală a întreruperilor este setat I==1 (in SREG)
Sistemul de întreruperi, de exemplu, va permite un apel de subrutină automat la apăsarea unui buton, luat ca sursă de întrerupere externă EXT_INT.