Sunteți pe pagina 1din 11

Capitolul 5

29
B BL LO OC CU UL L G GE EN NE ER RA AT TO OR R D DE E T TA AC CT T I I D DE E
R RE ES SE ET T
5.1. Introducere
Blocul generator de tact i de reset (CRG) controleaz urmtoarele funcii
ale microcontrolerului: regimurile de funcionare, funcionarea buclei cu calare n
faz PLL (Phase-locked loop), generarea tactului de sistem, funcionarea
temporizatorului Watchdog n vederea verificrii executrii corecte a programului
(COP Computer Operating Properly watchdog), funcionarea sistemului de
ntrerupere n timp real (RTI Real-time interrupt) i generarea resetrii de la
diverse surse. Acestui bloc i sunt asociate diverse registre speciale: SYNR,
REFDV, CRGFLG, CRGINT, CLKSEL, PLLCTL, RTICTL, COPCTL, i
ARMCOP. Blocului i sunt asociai pinii XTAL, EXTAL, XCLKS i XFC. Pentru
controlul resetului acest bloc lucreaz mpreun cu blocul stabilizator de tensiune
VREG3V3. Acestui bloc i este asociat registrul VREG3V3, pinul /RESET i toi
pinii de alimentare.
5.2. Regimurile de funcionare
Regimurile de funcionare ale microcontrolerului sunt urmtoarele:
- regimul normal de funcionare (run mode);
- regimul de ateptare (wait mode);
- regimul de oprire sau stop (stop mode) cu versiunile oprire total (full stop
mode) i oprire parial (pseudo-stop mode);
- regimul de meninere (self-clock mode).
n regimul normal de funcionare sunt disponibile toate sursele de tact
necesare blocurilor microcontrolerului, blocul UCP lucreaz, la fel vor lucra toate
blocurile periferice care sunt validate, inclusiv blocurile COP i RTI.
Trecerea n regimul de ateptare se realizeaz prin execuia instruciunii
WAI. n acest regim oscilatorul de tact funcioneaz dar blocul UCP este inactiv.
Pot funciona blocurile periferice care au posibilitatea de a funciona n regimul de
ateptare i au fost validate n prealabil, inclusiv blocurile COP i RTI. Prsirea
acestui regim se face prin ntreruperile validate n prealabil sau prin resetare.
Avnd n vedere c la execuia instruciunii WAI se salveaz n stiv registrele
principale ale microcontrolerului (registrele X, Y, A i B) i adresa curent, dac
prsirea regimului de ateptare se face prin ntrerupere atunci dup execuia
funciei de ntrerupere se continu execuia normal a programului.
Trecerea n regimul de oprire total sau parial (n funcie de valoarea
bitului CLKSEL_PSTP) se realizeaz prin execuia instruciunii STOP cu condiia
ca bitul CCR_S s fie ters.
BLOCUL GENERATOR DE TACT I DE RESET
30
n regimul de oprire total oscilatorul de tact este blocat i nici un bloc al
microcontrolerului nu funcioneaz. Prsirea acestui regim se realizeaz prin
resetare sau prin ntreruperile externe validate /XRQ i /IRQ. Dei n acest regim se
obine cel mai mic consum al microcontrolerului, apare dezavantajul timpului lung
de pornire al oscilatorului de tact la prsirea acestui regim.
n regimul oprire parial oscilatorul de tact funcioneaz i pot funciona
numai blocurile COP i RTI. i ntreruperile validate de la aceste blocuri pot scoate
microcontrolerul din regimul oprire parial. Consumurile microcontrolerelor
depind de modul de funcionare, frecvena de tact, sarcinile cuplate la pini,
temperatur, varianta de fabricaie etc. Dm n continuare consumurile unui
microcontroler MC9SC32 n urmtoarele condiii de funcionare: modul de
funcionare single chip, frecvena de magistral (f
BUS
) de 25MHz obinut de la un
oscilator de 4MHz, fr sarcini externe, temperatur de aproximativ 100
0
C
(opiunea C de temperatur, -40
0
C + 85
0
C). n regimul normal de funcionare,
consumul este de maxim 35mA. n regimul de ateptare acesta se reduce la maxim
30mA dac toate blocurile sunt validate i la aproximativ maxim 8mA dac numai
blocul RTI este validat. n regimul oprire parial acest consum tipic este de
aproximativ 0,55mA dac blocurile RTI i COP sunt inactive i de aproximativ
0,75mA dac aceste blocuri sunt active. n regimul oprire total consumul tipic este
de aproximativ 0,14mA.
Regimul de meninere apare dac tactul generat de oscilatorul de tact este
de nivel sczut sau de frecven prea joas, caz n care se poate trece pe un tact
intern. Acest regim asigura funcionarea microcontrolerului la performane minime.
5.3. Oscilatorul de tact
Oscilatorul de tact al microcontrolerului, prezentat n figura 5.1, este
format din oscilatorul propriu-zis i sistemul de supraveghere (Clock Monitor).
Acestuia i sunt ataai trei conexiuni externe: intrarea de selecie XCLKS, intrarea
de tact EXTAL i ieirea de tact XTAL. Oscilatorul este alimentat de la tensiunea
intern (V
DDPLL
, V
SSPLL
) de 2,5 V.







Oscilator
Sistem de
supraveghere
(Clock
Monitor)
OSCCLK
f
OSCCLK
x
CRGFLG_SCMIF
CRGFLG_SCM

XTAL
EXTAL
XCLKS
x
x
PLLCTL_SCME
PLLCTL_CME
CRGINT_SCMIE

V
DDPLL
, V
SSPLL
CLKSEL_PSTP


Figura 5.1. Oscilatorul de tact.

Oscilatorul poate fi configurat n schem de oscilator Colpits sau Pierce.
Selectarea se face prin eantionarea automat a intrrii XCLKS pe durata resetrii
(XCLKS=0/1 configuraie Colpits/Pierce). Oscilatorul Colpits este de domeniu
mai ngust de frecvene (0,5 16MHz) dar este de consum i zgomot redus i este
5.4. Bucla PLL
31
controlat automat amplitudinea tactului generat (funcia ALC Amplitude
Limitation Control). Oscilatorul Pierce este mai robust i de domeniu mai larg de
frecvene (0,5 40MHz). Componentele externe de fixare a frecvenei de tact se
aplic la pinii EXTAL i XTAL. La pinul EXTAL se poate aplica i o frecven
extern, pinul XTAL fiind lsat liber. Aa cum s-a artat n paragraful anterior,
funcionarea oscilatorului n regimul stop este dictat de bitul CLKSEL_PSTP
(CLKSEL_PSTP=0/1 oscilator blocat/n funcionare). Semnalul de tact f
OSCCLK

se obine la ieirea oscilatorului OSCCLK.
Sistemul de supraveghere controleaz calitatea tactului generat n ceea ce
privete amplitudinea i frecvena. n caz de eroare se poate intra n regim de
meninere. Regimul de meninere apare dac: sistemul de supraveghere a
oscilatorului de tact este activat (PLLCTL_CME=1/0 validare/invalidare a
funcionrii sistemului de supraveghere a oscilatorului de tact), bitul de validare a
regimului de meninere este setat (PLLCTL_SCME=1/0 trecere n regimul de
meninere/resetare la apariia unei erori la oscilatorul de tact) i apariia unei erori
la oscilatorul de tact. Eroare de frecven nseamn scderea frecvenei de tact, pe
durata de timp de verificare, sub o anumit valoare f
CMFA
(tipic f
CMFA
=100KHz). n
regimul de meninere, tactul de frecven minim f
SCM
este generat de OCT din
cadrul buclei PLL (f
SCM
=15MHz).
Starea n care se gsete oscilatorul de tact este indicat de bitul
CRGFLG_SCM (CRGFLG_SCM=0/1 regim normal de funcionare i tactul
f
OSCCLK
este disponibil / regimul de meninere iar oscilatorul de tact este ntr-o stare
nedefinit). La modificarea bitului CRGFLG_SCM (trecerea de la regimul normal
la regimul de meninere sau invers) se poate genera o ntrerupere mascabil cu bitul
CCR_I, validarea ntreruperii se realizeaz din bitul CRGINT_SCMIE, indicatorul
de ntrerupere fiind CRGFLG_SCMIF.
5.4. Bucla PLL
Pentru obinerea diverselor frecvene de tact pentru UCP i celelalte
module componente ale microcontrolerului se utilizeaz bucla PLL, figura 5.2.
Activarea buclei PLL se realizeaz prin setarea bitului PLLCTL_PLLON. n
continuare va fi descris funcionarea, n principiu, a buclei PLL.


6
f
OSCCLK Divizorul
referinei
4
Comparator
de faz
i
Detector de
calare
Pomp de
curent
OCT
f
PLL
f
OSCCLK
REFDV+1

REFDV_[REFDV3:REFDV0]
Divizorul
buclei SYNR_[SYN5:SYN0]
Divizor
prin 2
f
PLL
2(SYN+1)

XFC
V
DDPLL
pin

Filtru de bucl FTJ
CRGFLG_LOCK
CRGFLG_TRACK
PLLCTL_PLLON=1
Activare PLL

Figura 5.2. Bucla PLL.
BLOCUL GENERATOR DE TACT I DE RESET
32
Frecvena generat de oscilatorul de tact f
OSCCLK
este divizat de ctre
blocul de divizare al referinei printr-un factor cuprins ntre 1 i 16, factor fixat de
biii REFDV_[REFDV3:REFDV0]. Aceast frecven este comparat de ctre
comparatorul de faz cu frecvena f
PLL
generat de oscilatorul comandat n tensiune
OCT i divizat de ctre divizorul prin 2 i apoi prin divizorul buclei. Factorul de
divizare total al frecvenei f
PLL
este fixat de biii SYNR_[SYN5:SYN0] i este
cuprins ntre 2 i 128. n urma comparrii se stabilete mrimea i sensul diferenei
dintre cele dou frecvene, adic eroarea de frecven. n funcie de eroarea de
frecven pompa de curent extrage sau injecteaz curent n filtrul de bucl FTJ
(filtru trece jos) conectat la conexiunea extern XFC. Tensiunea continu rezultat
la ieirea filtrului de bucl comand valoarea frecvenei f
PLL
generat de oscilatorul
comandat n tensiune OCT. Bucla PLL lucreaz n sensul calrii, adic al anulrii
erorii de frecven ceea ce nseamn egalarea celor dou frecvene aplicate
comparatorului de faz i n final blocarea fazei (pstrarea unei diferene de faz
constant ntre cele dou frecvene). n cazul calrii frecvena f
PLL
generat este
dat de relaia (5.1).
1 ) (
1 ) (
2
+
+
=
REFDV
SYNR
f f
OSCCLK PLL
(5.1)

n aceast relaie (SYNR) este numrul fixat de biii SYNR_[SYN5:SYN0] iar
(REFDV) este numrul fixat de biii REFDV_[REFDV3:REFDV0].
Bucla PLL se poate gsi n dou regimuri de funcionare: regimul de
achiziie (acquisition mode) i regimul de urmrire (tracking mode).
Regimul de achiziie corespunde situaiei n care eroarea de frecven este
mare. n acest caz curentul vehiculat de pompa de curent cu filtrul de bucl
i
ch
este mare (tipic i
ch
= 38,5A ). Aceasta duce la o vitez mare de reducere a
erorii de frecven prin modificarea rapid a frecvenei generat de OCT. n
regimul de achiziie variaia frecvenei generate de OCT (jitter) este mare dar
rspunsul buclei la zgomote este rapid. Regimul de achiziie este indicat prin
tergerea automat a bitului CRGFLG_TRACK.
Cnd eroarea de frecven ajunge sub o anumit valoare
trk
(tipic

trk
= 34% fa de frecvena la calare) se trece n regimul de urmrire. n acest
caz curentul vehiculat de pompa de curent cu filtrul de bucl i
ch
este redus (tipic
i
ch
= 3,5A ) i are ca efect o ajustare fin a frecvenei generate de OCT. n
regimul de urmrire variaia frecvenei generate de OCT (jitter) este redus dar i
rspunsul buclei la zgomote este lent. Regimul de urmrire este indicat prin setarea
automat a bitului CRGFLG_TRACK.
n regimul de urmrire, cnd eroarea de frecven ajunge sub valoarea

Lock
(tipic
LOCK
=01.5% fa de frecvena la calare) se consider bucla
calat i frecvena generat f
PLL
suficient de stabil pentru a fi folosit ca tact
pentru UCP i celelalte blocuri ale microcontrolerului. Starea de calare a buclei
este indicat prin setarea automat a bitului CRGFLG_LOCK. Ieirea din calare,
adic situaia n care eroarea de frecven devine mai mare dect valoarea

unl
(tipic
unl
=0,52.5% fa de frecvena la calare) este indicat imediat de
tergerea automat a bitului CRGFLG_LOCK. Prsirea modului de urmrire i
5.5. Blocul RTI
33
trecerea din nou n modul de achiziie are loc n situaia n care eroarea de
frecven devine mai mare dect
unt
(tipic
unt
=68% fa de frecvena la
calare), aspect indicat de tergerea automat a bitului CRGFLG_TRACK.
La orice modificare a bitului CRGFLG_LOCK se poate genera o
ntrerupere mascabil CCR_I, indicatorul de ntrerupere fiind CRGFLG_LOCKIF,
validarea ntreruperii realizndu-se cu ajutorul bitului CRGINT_LOCKIE. Prin
subrutina de ntrerupere se va verifica starea bitului CRGFLG_LOCK i n funcie
de valoarea acestuia se va alege tactul provenit de la oscilatorul de tact sau de la
bucla PLL (CLKSEL_PLLSEL=1/0 tact derivat de la PLL/oscilatorul de tact).
Funcionarea buclei PLL, n ceea ce privete comutarea regimurilor de
achiziie i de urmrire, poate fi controlat automat sau manual. Alegerea se
realizeaz cu ajutorul bitului PLLCTL_AUTO (PLLCTL_AUTO=0/1 control
automat/manual).
n modul de funcionare automat (PLLCTL_AUTO=1) comutarea
regimurilor de achiziie i de urmrire se realizeaz automat. Timpul minim de
calare a buclei este dat de timpul de stabilizarea a buclei t
stab
(tipic t
stab
=0,5ms). Se
testeaz periodic sau prin ntrerupere valoarea bitului CRGFLG_LOCK pentru a
selecta tactul microcontrolerului.
n modul de funcionare manual (PLLCTL_AUTO=0) bitul
CRGFLG_LOCK nu este utilizat. Iniial se selecteaz modul de achiziie prin
setarea bitului PLLCTL_ACQ. Dup expirarea timpului t
acq
(tipic t
acq
=0,3ms) se
poate trece n regimul de urmrire prin tergerea bitului PLLCTL_ACQ. Dup
expirarea timpului t
al
(tipic t
al
=0,2ms) se consider c bucla PLL este stabilizat i
se poate trece la selectarea tactului de la bucla PLL (CLKSEL_PLLSEL=1).
5.5. Blocul RTI
Blocul RTI este n principiu un temporizator restartabil, realizat dintr-un
divizor programabil al frecvenei oscilatorului de tact f
OSCCLK
i cu posibilitatea de
a genera ntreruperi, figura 5.3.

f
OSCCLK
Prescaler
2
9+RTICTL_RTR[6:4]
3
RTICTL_RTR[6:4]=000
Bloc RTI inactiv
3
RTICTL_RTR[6:4]1
Modul
1+RTICTL_RTR[3:0]
4
RTICTL_RTR[3:0]
RTI
out
ntrerupere


Figura 5.3. Blocul RTI.

Divizorul este format din dou seciuni: prescaler al crui factor de
divizare este 2
9+RTICTL_RTR[6:4]
i divizorul care fixeaz modulul cu factor de divizare
egal cu 1+RTICTL_RTR[3:0]. n acest fel factorul de divizare total RTI este dat
de relaia (5.2).
]) 0 : 3 [ _ 1 ( 2
] 4 : 6 [ _ 9
RTR RTICTL RTI
RTR RTICTL
+ =
+
(5.2)

BLOCUL GENERATOR DE TACT I DE RESET
34
Factorul de divizare RTI este cuprins ntre 1*2
10
i 16*2
16
, pentru
RTICTL_RTR[6:4]=000 blocul RTI este blocat. Blocul RTI poate genera
ntreruperi periodice la expirarea timpului de temporizare RTI
out
dac n prealabil
ntreruperile au fost validate prin setarea bitului de validare CRGINT_RTIE,
indicatorul de ntrerupere fiind CRGFLG_RTIF. Orice scriere la adresa registrului
RTICTL restarteaz temporizarea blocului RTI.
Funcionarea blocului RTI n regimul de ateptare (wait) este controlat de
bitul CLKSEL_RTIWAI (CLKSEL_RTIWAI=0/1 validare/invalidare) iar
funcionarea acestui bloc n regimul de oprire parial (pseudo-stop) este controlat
de bitul PLLCTL_PRE (PLLCTL_PRE=1/0 validare/invalidare funcionare RTI).
Aplicaia principal a blocului RTI este de generare de ntreruperi
periodice (de exemplu pentru contorizarea timpului).
5.6. Blocul COP
Ca i blocul RTI i blocul COP este un temporizator restartabil de tip
watchdog , realizat dintr-un divizor programabil al frecvenei oscilatorului de tact
f
OSCCLK
i cu posibilitatea de a genera resetarea sistemului, figura 5.4.

f
OSCCLK
Divizor
programabil
3
COPCTL_CR[2:0]=000
Bloc COP inactiv
3
COPCTL_CR [2:0]1
COP
out
Resetare sistem


Figura 5.4. Blocul COP.

Factorul de divizare al divizorului programabil este determinat de biii
COPCTL_CR[2:0] astfel: 2
14
pentru COPCTL_CR[2:0]=1, 2
16
pentru
COPCTL_CR[2:0]=2, 2
18
pentru COPCTL_CR[2:0]=3, 2
20
pentru
COPCTL_CR[2:0]=4, 2
22
pentru COPCTL_CR[2:0]=5, 2
23
pentru
COPCTL_CR[2:0]=6 i 2
24
pentru COPCTL_CR[2:0]=7. Pentru
COPCTL_CR[2:0]=000 blocul COP este blocat. La expirarea temporizrii COP
out

se realizeaz resetarea sistemului. Restartarea temporizrii se realizeaz prin
scrierea n registrul ARMCOP a secvenei magice 0x55 i 0xAA n aceast ordine.
Blocul COP poate lucra n dou regimuri de funcionare: normal i cu
fereastr (Window COP). Selectarea modurilor se realizeaz cu ajutorul bitului
COPCTL_WCOP (COPCTL_WCOP=0/1 COP opereaz n modul
normal/fereastr). n modul fereastr, restartarea temporizatorului COP cu
ajutorul scrierii secvenei magice n registrul ARMCOP se poate face numai n
ultimul sfert (ultimii 25%) al temporizrii COP
out
. O scriere prematur nu are nici
un efect.
Funcionarea blocului COP n regimul de ateptare (wait) este controlat de
bitul CLKSEL_COPWAI (CLKSEL_COPWAI=0/1 validare/invalidare) iar
funcionarea acestui bloc n regimul de oprire parial (pseudo-stop) este controlat
de bitul PLLCTL_PCE (PLLCTL_PCE=1/0 validare/invalidare funcionare
COP).
5.7. Sistemul de tact
35
Aplicaiile principale ale blocului COP sunt:
- scoaterea microcontrolerului din regimurile de ateptare sau de oprire
parial la depirea temporizrii COP
out
;
- supravegherea execuiei unui program (funcia de watchdog) prin
introducerea n cadrul programului, n locuri convenabil alese, a
instruciunilor de restartare (scrierea secvenei magice) pentru evitarea
atingerii temporizrii COP
out
.
5.7. Sistemul de tact
Structura sistemului de tact este dat n figura 5.5

f
OSCCLK
Bucla
PLL
Oscilator de tact
+
Sistem de
supraveghere
f
PLL
sau
f
SCM
2
f
SYSTEM
(f
OSCCLK
f
PLL,
f
SCM
)

f
BUS
=f
CPU
/2
f
OSCCLK
sau f
SCM
f
CPU
CLKSEL_PSTP,
CLKSEL_ROAWAI, CLKSEL_SCME,
PLLCTL_CME
CLKSEL_CWAI
CLKSEL_SYSWAI
CLKSEL_COPWAI, PLLCTL_PCE
COP
CLKSEL_RTIWAI, PLLCTL_PRE
RTI
CLKSEL_SYSWAI
CRGFLG_SCM
0
1
f
OSCCLK
sau f
SCM
0
1
CLKSEL_PLLSEL sau
CRGFLG_SCM
CRGFLG_RTIF
reset
CRGFLG_LOCKIF
PLLCTL_PLLON,
CLKSEL_PLLWAI
CRGFLG_SCM, CRGFLG_SCMIF
reset
spre periferice

SW1
SW2

Figura 5.5. Structura sistemului de tact.

Blocul CRG genereaz toate semnalele de tact necesare funcionrii
microcontrolerului. Blocul UCP utilizeaz semnalul de tact f
CPU
iar perifericele
utilizeaz semnalul de tact f
BUS
, relaia dintre cele dou semnale de tact fiind:
f
BUS
=f
CPU
/2. Facem precizarea c durata unui ciclu CPU de execuie a
instruciunilor este egal cu perioada T
BUS
(T
BUS
=1/f
BUS
). Unele periferice, ca de
exemplu MSCAN, necesit i un semnal de tact f
OSCCLK
provenit de la oscilatorul
de tact.
Toate semnalele de tact deriv de la cele dou surse: oscilatorul de tact i
bucla PLL.
n regimul normal de funcionare, oscilatorul de tact funcioneaz i
genereaz frecvena f
OSCCLK
. n acest regim poate funciona i bucla PLL care va
genera frecvena f
PLL
. Cu ajutorul comutatorului SW1 va fi aleas una dintre aceste
frecvene denumit f
SYSTEM
. Din frecvena f
SYSTEM
se creeaz frecvenele f
CPU
i
f
BUS
. Pentru blocurile RTI i COP se utilizeaz semnalul de tact f
OSCCLK
. n cazul n
care se intr n regimul de meninere toate semnalele de tact deriv din semnalul
f
SCM
.
BLOCUL GENERATOR DE TACT I DE RESET
36
i n regimul de ateptare oscilatorul de tact funcioneaz. Funcionarea
buclei PLL n acest regim este controlat de bitul CLKSEL_PLLWAI.
Disponibilitatea frecvenei f
SYSTEM
este controlat de bitul CLKSEL_SYSWAI iar a
frecvenei f
CPU
i de bitul CLKSEL_CWAI. Alimentarea blocurilor RTI i COP cu
tact este controlat de biii CLKSEL_RTIWAI, respectiv, CLKSEL_COPWAI.
n regimul de oprire parial oscilatorul de tact funcioneaz iar tactul
f
OSCCLK
poate alimenta numai blocurile RTI i COP. Controlul funcionrii acestor
blocuri, n acest regim, cade n sarcina biilor PLLCTL_PRE, respectiv,
PLLCTL_PCE.
n regimul de oprire total nu este disponibil nici un semnal de tact.
5.8. Sistemul de resetare
Blocul CRG controleaz i resetrile microcontrolerului. Prin resetare se
nelege aducerea microcontrolerului ntr-o stare iniial bine definit. La acest
microcontroler resetarea este considerat ca o excepie de la funcionarea corect a
microcontrolerului i va fi tratat ca o ntrerupere nemascabil.
Sursele ce pot genera resetarea sunt: resetarea de la cuplarea tensiunii de
alimentare POR (Power-on Reset), resetarea de la scderea tensiunii de alimentare
LVR (Low Voltage Reset), resetarea de la conexiunea extern /RESET (External
Reset), resetarea de la circuitul de monitorizare a calitii tactului oscilatorului de
tact i resetarea de la blocul COP.
Primele trei tipuri de resetri au prioritate egal i maxim (nivel 0 de
prioritate), vectorul de ntrerupere alocat fiind 0xFFFE:0xFFFF. Aceste resetri
sunt generate de blocul stabilizator de tensiune VREG3V3, figura 5.6.



Stabilizator
dublu de
tensiune
+
Bloc
de control

x
x
LVD
x
x
x
V
DDR
V
SSR
V
DDA
V
SSA
V
REGEN
x
x
x
x
V
DDPLL
V
SSPLL
V
DD
V
SS
LVR POR
LVRF PORF
LVIF

Figura 5.6. Blocul stabilizator de tensiune VREG3V3.

Blocului VREG3V3 i se aplic dou tensiuni (V
DDR
,V
SSR
) i (V
DDA
,V
SSA
).
Tensiunea (V
DDA
,V
SSA
) trebuie s fie o tensiune filtrat i este destinat alimentrii
blocului convertor analog numeric ATD i a referinei de tensiune a stabilizatorului
de tensiune. Valoarea tensiunilor (V
DDR
,V
SSR
) i (V
DDA
,V
SSA
)

este cuprins ntre
3,3V i 5V, tipic 5V. Stabilizatorul genereaz dou tensiuni de 2,5V: tensiunea
(V
DDPLL
,V
SSPLL
) - destinat alimentrii buclei PLL i a oscilatorului de tact - i
tensiunea V
DD
,V
SS
destinat alimentrii UCP. Tensiunile (V
DDPLL
,V
SSPLL
) i
(V
DD
,V
SS
) sunt accesibile la pinii microcontrolerului ((V
DD1
,V
SS1
) i (V
DD2
,V
SS2
)
pentru tensiunea (V
DD
,V
SS
)) la care se pot aplica circuite de filtrare. Funcionarea
blocului poate fi inhibat (shutdown mode) prin conectarea la mas a intrrii
5.9. Registrele ataate blocului CRG
37
V
REGEN
, intrare care nu este disponibil la toate variantele de microcontrolere. n
acest caz trebuie folosite tensiuni externe pentru tensiunile (V
DDPLL
,V
SSPLL
) i
(V
DD
,V
SS
). Facem observaia c pentru alimentarea pinilor de intrare/ieire (I/O) se
utilizeaz tensiunea de alimentare (V
DDX
,V
SSX
), tensiune ce se conecteaz de obicei
mpreun cu tensiunea (V
DDR
,V
SSR
).
Resetarea POR apare la cuplarea tensiunilor de alimentare la
microcontroler i pentru aceasta este supravegheat tensiunea (V
DD
,V
SS
) de ctre
blocul POR. Resetarea POR are loc pe durata n care aceast tensiune crete de la
valoarea V
PORA
la valoarea V
PORR
(V
PORA
0,97V, V
PORD
2,07V). Trecerea prin
resetarea POR este indicat de setarea bitului CRGFLG_PORF.
La resetarea LVR este supravegheat tot tensiunea (V
DD
,V
SS
) de data
aceasta de ctre blocul LVR. Resetarea ncepe o dat cu scderea acestei tensiuni
sub pragul V
LVRA
(minim 2,25V) i se termin la creterea acestei tensiuni peste
pragul V
LVRD
(maxim 2,55V). Trecerea prin resetarea LVR este indicat de setarea
bitului CRGFLG_LVRF.
Blocul VREG3V3 poate genera i o ntrerupere. n acest scop este
supravegheat tensiunea (V
DDA
,V
SSA
) de ctre blocul LVD. Controlul acestei
ntreruperi cade n sarcina biilor din registrul VREGCTL. Bitul
VREGCTL_LVDS se seteaz la cderea tensiunii (V
DDA
,V
SSA
) sub pragul V
LVIA

(minim 4,1V; maxim 4,66V) i se terge la creterea acestei tensiuni peste pragul
V
LVID
(minim 4,25V; maxim 4,77V). La orice modificare a bitului
VREGCTL_LVDS se va seta indicatorul de ntrerupere VREGCTL_LVIF,
indicator ce trebuie ters prin subrutina de ntrerupere. Validarea ntreruperii se
realizeaz cu ajutorul bitului VREGCTL_LVIE.
Resetrile nemascabile de la circuitul de monitorizare a calitii tactului
oscilatorului de tact (nivel de prioritate 1) i de la blocul COP (nivel de prioritate 2)
au fost discutate n paragrafele anterioare.
Resetarea de la pinul /RESET se realizeaz prin aplicarea unui nivel sczut
la acest pin i are acelai efect ca i resetrile POR i LVR.
5.9. Registrele ataate blocului CRG
SYNR x0 x0 SYN50 SYN40 SYN30 SYN20 SYN10 SYN00

REFDV x0 x0 x0 x0 REFDV30 REFDV20 REFDV10 REFDV00

CRGFLG RTIF0 PORF
*
LVRF
*
LOCKIF0 LOCK0R TRACK0R SCMIF0 SCM0R

CRGINT RTIE0 x0 x0 LOCKIE0 x0 x0 SCMIE0 x0

CLKSEL PLLSEL0 PSTP0 SYSWAI0 ROAWAI0 PLLWAI0 CWAI0 RTIWAI0 COPWAI0

PLLCTL CME1 PLLON1 AUTO1 ACQ1 x0 PRE0 PCE0 SCME1

RTICTL x0 RTR60 RTR50 RTR40 RTR30 RTR20 RTR10 RTR00

COPCTL WCOP0 RSBCK0 x0 x0 x0 CR20 CR10 CR00

ARMCOP BIT70 BIT60 BIT50 BIT40 BIT30 BIT20 BIT10 BIT00
BLOCUL GENERATOR DE TACT I DE RESET
38
5.10. Registrele ataate blocului VREG3V3

VERGCTL x0 x0 x0 x0 x0 LVDS0R LVIE0 LVIF0

Legend:
- notaia biilor Bit
a
din registre: Bit numele bitului, x bit neimplementat (se citete 0 iar
scrierea nu are efect); a valoare de reset, R bit de tip read only
-
*
bitul PORF se seteaz la resetarea POR, bitul LVRF se seteaz la resetarea LVR, aceti
bii nu sunt afectai de resetarea de la celelalte surse.
5.11. Aplicaii
n exemplul ce urmeaz este artat modul de programare a blocului RTI
pentru generarea de ntreruperi periodice la fiecare 65,563ms. Se considera c
frecventa oscilatorului de tact este de 16 MHz. La fiecare ntrerupere se comand
aprinderea LED-urilor conectate la portul B. ntreruperea de la blocul RTI are
nivelul de prioritate 7, adresa 0xFFF0:0xFFF1.

----------------------------------------------------------------------------
// ---------------------------------------------------------------------------
// Subrutina de ntrerupere RTI
// ---------------------------------------------------------------------------
unsigned char a=0x01;
interrupt void RTI_ISR(void)
{
if(a==0)
a=0x01;
PORTB=PORTB^a;
a=a<<1;
CRGFLG_RTIF = 1; // tergere indicator de ntrerupere
}

// ---------------------------------------------------------------------------
// Iniializare periferice
// ---------------------------------------------------------------------------

void PeriphInit(void)
{
DDRB = 0xFF; // liniile PORTB ieiri
PORTB = 0x00; // LED-urile stinse
RTICTL = 0x7F; // RTI prescaler 16*2^16, Fosc=16MHz
CRGINT_RTIE = 1; // validare ntrerupere RTI
}

// ---------------------------------------------------------------------------
// Main
// ---------------------------------------------------------------------------

void main (void)
{
PeriphInit(); / iniializare periferice
EnableInterrupts; // validare ntrerupere

for(;;) // bucla infinita pentru generare ntreruperi
{
}
}
5.11. Aplicaii
39
Un exemplu simplu de comutare a tactului generat de oscilatorul de tact la
cel generat de bucla PLL este prezentat n continuare. Se consider c tactul
oscilatorului de tact de 16 MHz (f
CPU
=16MHz , f
BUS
=8MHz). La fel se presupune
c biii registrelor de control a blocului CRG au valoarea de la resetare. Pentru a
obine frecvena f
PLL
de 20MHz se alege factorul de multiplicare (coninutul
registrului SYNR+1) egal cu 10 i factorul de divizare (coninutul registrului
REFDV+1) egal cu 16.

--------------------------------------------------------------------------------
SYNR = 0x09; // factor de multiplicare 9+1
REFDV = 0x0F; // factor de divizare 15+1
while(!CRGFLG_LOCK) // ateptare cale bucla PLL
CLKSEL_PLLSEL = 1; // tact sistem de la bucla PLL
---------------------------------------------------------------------------------

Note bibliografice
[1] MC9S12C Family/MC9S12GC Family Reference Manual (Chapter 9 Clocks and
Reset Generator (CRGV4) Block Description), Rev 01.24, 05/2010, Freescale
Semiconductors.
[2] MC9S12C Family/MC9S12GC Family Reference Manual (Chapter 11 Oscillator
(OSCV2) Block Description), Rev 01.24, 05/2010, Freescale Semiconductors.
[3] MC9S12C Family/MC9S12GC Family Reference Manual (Chapter 16 Dual Output
Voltage Regulator (VREG3V3V2) Block Description), Rev 01.24, 05/2010,
Freescale Semiconductors.

S-ar putea să vă placă și