Documente Academic
Documente Profesional
Documente Cultură
PIC.
Datorit existenei unei singure uniti aritmetice i logice, microcontroler-ul poate executa o
singur operaie pentru un anumit interval de timp. Astfel, codul main va rula sub forma
unei structuri secveniale. Totui, exist situaii neprevzute n care trebuie s executm o alt
activitate fa de cea care ruleaz n momentul respectiv. Acest tip de eveniment poate fi
executat cu ajutorul sistemului de ntreruperi. Astfel, fiecrui eveniment i se asociaz o
ntrerupere. Apariia evenimentului respectiv va provoca executarea unor rutine de cod
special scrise de programator (rutine de deservire a ntreruperii).
ntreruperile sunt des utilizate n corelare cu ndeplinirea
unei condiii exterioare. Spre deosebire de sistemul de
intrare oferit de modulul PORT, ntreruperile permit
executarea codului indiferent de momentul apariiei
evenimentului. ntreruperile ofer flexibilitate n scrierea
i rularea programelor. Cererea de ntrerupere apare la
nivel hardware, deci nu este necesar coordonarea rutinei
de ctre programator, microcontrolerul fiind cel care
gestioneaz aceast cerere.
Uzual, n cadrul microcontrolerelor pot exista urmtoarele surse de ntrerupere:
-
ntreruperi externe;
ntreruperi provocate de timere;
ntreruperi provocate de porturi;
ntreruperi provocate de comparator;
ntreruperi provocate de modulul USART.
Totui, pentru a se putea utiliza o ntrerupere trebuie s modificm o serie de registre. Primul
pe list este registrul INTCON, care nregistreaz apariia ntreruperilor prin intermediul unor
flag-uri. n primul rnd pentru a se putea accesa o ntrerupere trebuie s activm bitul 7,
intitulat GIE (global interrupt enable), fapt ce valideaz modulul de ntrerupere. Din registrul
INTCON pot fi activate sau dezactivate principalele tipuri de ntreruperi. De exemplu, prin
validarea bitului 4 (INTE) vor fi activate ntreruperile exterioare, iar prin activarea bitului 5
este activat ntreruperea de depire a timer-ului 0. Pentru detalii referitoare la registrele
modulului de ntrerupere consultai tabelul 1.
Tabelul 1. Registre importante din cadrul modulului de ntreruperi.
{
fante++;
INTCON.INTF=0;
}
INTCON.RBIF=0;
}
Pentru o nelegere mai uoar a sistemului de ntrerupere putei consulta schema logic
urmtoare:
trebuie resetat prin software n rutina de deservire a ntreruperii (Interrupt Service Routine),
nainte de reactivarea acestei ntreruperi.
ntreruperea TMR0
O depire a timer-ului pe 8 bii TMR0 (tranziia de la 0xFF la 0x00) va seta bitul T0IF
(INTCON<2>). ntreruperea poate fi activat / dezactivat prin setarea / resetarea bitului de
control T0IE (INTCON<5>).
ntreruperea PORTB
O schimbare a strii logice a oricruia dintre pinii 47 ai PORTB (pini configurai ca
intrare!!!) seteaz bitul RBIF (INTCON<0>). ntreruperea poate fi activat / dezactivat prin
setarea / resetarea bitului de control RBIE (INTCON<3>).