|
Reset-ul microcontrolerului
Resetul este folosit pentru a pune microcontrolerul intr-o conditie 'cunoscuta'. Aceasta inseamna practic ca microcontrolerul poate sa se comporte incorect in unele conditii nedorite. Pentru a continua sa functioneze corect trebuie resetat, insemnand ca toti registrii vor fi pusi intr-o stare de start. Resetul nu este folosit numai cand microcontrolerul nu se comporta cum vrem noi, dar poate de asemenea sa fie folosit cand se incearca un montaj ca o intrerupere intr-un program de executie sau cand se pregateste un microcontroler de a citi un program.
Pentru a preveni ajungerea unui zero logic la pinul MCLR accidental (linia de deasupra inseamna ca resetul este activat de un zero logic), MCLR trebuie sa fie conectat printr-un rezistor la polul pozitiv al sursei de alimentare. Rezistorul trebuie sa fie intre 5 si 10k. Acest rezistor a carui functie este de a mentine o anumita linie la starea logica unu ca o prevenire, se numeste o scoatere-pull up.
Microcontrolerul
PIC16F84 are cateva surse de reset:
a) Reset la alimentare, POR (Power-On Reset)
b) Reset in timpul lucrului obisnuit prin aducerea unui zero logic la
pinul MCLR al microcontrolerului.
c) Reset in timpul regimului SLEEP
d) Reset la depasirea timer-ului watchdog (WDT)
e) Reset in timpul depasirii WDT in timpul regimului SLEEP.
Cele mai importante resurse de reset sunt a) si b). Prima are loc de
fiecare data cand este alimentat microcontrolerul si serveste la
aducerea toturor registrilor la starea initiala a pozitiei
de start. A doua este pentru a aduce un zero logic la pinul MCLR in timpul
operatiei normale a microcontrolerului. Este des folosita in
dezvoltarea de programe.
In timpul unui reset, locatiile de memorie RAM nu sunt resetate. Ele sunt
necunoscute la alimentare si nu sunt schimbate la nici un reset. Spre
deosebire de acestea, registrii SFR sunt resetati la o stare
initiala a pozitiei de start. Unul din cele mai importante
efecte ale resetului este setarea contorului de program (PC) la zero (0000h),
ceea ce permite programului sa inceapa executarea de la prima
instructiune scrisa.
Resetul la scaderea tensiunii de alimentare dincolo de limita
permisibila (Brown-out Reset)
Impulsul pentru resetare in timpul cresterii tensiunii este generat de
microcontrolerul insusi cand detecteaza o crestere in tensiunea
Vdd (in domeniul de la 1.2V la 1.8V). Acest impuls dureaza 72 ms ceea ce
este un timp suficient pentru oscilator ca sa se stabilizeze. Aceste 72 ms
sunt asigurate de un timer intern PWRT care are oscilatorul lui RC.
Microcontrolerul este in modul reset cat timp PWRT este activ. Totusi,
cand montajul functioneaza, probleme apar cand sursa nu scade la zero
ci cand scade mai jos de limita ce garanteaza functionarea
corecta a microcontrolerului. Acesta este un caz real din
practica, in special in mediile industriale unde perturbatiile
si instabilitatile sursei de alimentare sunt ceva foarte curent.
Pentru a rezolva aceasta problema trebuie sa ne asiguram
ca microcontrolerul este intr-o stare de reset de fiecare data cand
tensiunea sursei scade sub limita admisa.
Daca, conform cu specificatiile electrice, circuitul intern de resetare a microcontrolerului nu poate satisface aceste cerinte, se pot folosi componente electronice speciale ce sunt capabile sa genereze semnalul de reset dorit. In afara de aceasta functie, ele pot functiona pentru supravegherea tensiunii de alimentare. Daca tensiunea scade mai jos de nivelul specificat, un zero logic va apare la pinul MCLR ce tine microcontrolerul in starea de reset pana ce tensiunea nu este in limitele ce garanteaza functionarea corecta.