Sunteți pe pagina 1din 17

MODULUL CCP

186


11. MODULUL CCP



Cuprins
Introducere
Obiective
11.1 PRELIMINARII
11.2 CAPTURA
11.2.1 Funcionarea modulului CCP n modul de lucru
Captur
11.2.2 Configurarea capturii
11.3 COMPARARE
11.3.1 Funcionarea modulului CCP n modul de lucru
Comparare
11.3.2 Configurarea comparrii
11.4 PWM
11.5 REGISTRUL CCPxCON
Concluzii
ntrebri de autoevaluare
Termeni eseniali










SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455
187

Introducere
Timpul intervine n mod esenial n majoritatea sistemelor care
interacioneaz cu lumea real. Printre aplicaiile uzuale n care intervine
timpul se pot aminti: msurarea duratei ntre anumite evenimente sau
generarea unor impulsuri cu durate bine definite. Microcontrolerele PIC
au n dotarea lor module CCP (Comparare/Captur/PWM) care se
utilizeaz n asociere cu diferite timere care asigur baza de timp pentru
implementarea acestor funcionaliti. Majoritatea microcontrolerelor din
familia PIC18 dispun de dou asemenea module CCP1 i CCP2. Cele
dou module sunt aproape identice, existnd situaii n care ambele
folosesc aceeai baz de timp, dar fiecrui modul i corespunde un pin de
intrare/ieire (CPP1 i CPP2) distinct.
n acest context, n acest capitol se va face referire la un singur modul
generic CCPx, unde x={1,2}.


Obiective
Dup parcurgerea acestui capitol cursantul va trebui:
- s neleag principiul de funcionare al modulelor CCP n mod de
lucru Captur;
- s neleag principiul de funcionare al modulelor CCP n mod de
lucru Comparare;
- s neleag principiul de funcionare al modulelor CCP n mod de
lucru PWM;
- s poat realiza msurarea parametrilor unor semnale de intrare;
- s poat genera semnale de ieire cu anumite caracteristici;
- s poat configura modulele CCP i timerele implicate n vederea
realizrii unor aplicaii specifice


11.1 PRELIMINARII

n funcie de configurare modulele CCP pot fi utilizate n trei moduri de lucru.
n modul de lucru Captur, un eveniment extern aprut pe pinul corespunztor
determin copierea valorii Timerului1 sau a Timerului3 n regitrii de date
CCP. Acest mod de funcionare poate fi utilizat penru a msura durata
anumitor evenimente
MODULUL CCP
188
n modul de lucru Comparare, cnd valoarea Timerului 1 sau 3 devine egal
cu valoarea din regitrii de date CCP se genereaz un eveniment pe pinul
asociat sau Timerul 1 sau 3 este resetat. Acest mod de funcionare poate fi
utilizat pentru a genera semnale de ieire cu parametri de timp foarte riguroi
n modul de lucru PWM, modulul CCP utilizat mpreun cu Timerul2 poate
genera semnale modulate n lime cu perioad i factor de umplere
configurabil din program.

Fiecare modul CCP dispune de un registru de control CCPxCON utilizat pentru a
alege modul de lucru i o pereche de regitri de date CCPRxH:CCPRxL. Indiferent de modul
de funcionare ales, pinii corespunztori CPPx trebuie configurai ca intrare sau ieire n
regitrii TRIS asociai.
n toate cazurile de funcionare care implic utilizarea Timerelor 1 i 3, modulele CCP
necesit impulsuri de tact sincronizate. n consecin, pentru a asigura o funcionare corect,
biii T1SYNC sau T3SYNC din regitrii de control al acestor timere trebuie resetai.


11.2 CAPTURA

11.2.1 Funcionarea modulului CCP n modul de lucru Captur

Pentru a ilustra utilitatea modului de lucru captur s considerm urmtorul exemplu.

Exemplu
Se analizeaz modul n care se poate determina perioada unui semnal
dreptunghiular conectat la un pin de intrare al microcontrolerului.
Fig. 11.1. Semnal dreptunghiular conectat la pinul unui microcontroler

O soluie la aceast problem presupune interogarea continu a pinului de
intrare n vederea detectrii fronturilor i msurarea timpului scurs ntre dou
fronturi (de ex. cresctoare) cu ajutorul unui timer. Acest principiu este
prezentat, ntr-o variant mult simplificat, n diagrama de activitate din Fig.
11.2.
SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455
189

Fig. 11.2. Determinarea perioadei

Dup cum se poate observa, citirea portului ocup cel mai mult timp al
programului.

O alternativ la soluia prezentat n exemplul anterior o reprezint utilizarea
modulului CCP n modul de lucru Captur. Relund principiul de funcionare al modului de
lucru Captur menionm c la apariia unui eveniment pe pinul CPPx, se copiaz valoarea
Timerului 1 sau 3 din regitrii TMR1, respectiv TMR3, n regitrii de date ai modulului CCP
CCPRxH:CCPRxL. n acelai timp, bitul indicator de ntrerupere CCPxIF se seteaz i dac
bitul corespunztor CCPxIE este setat se poate genera o ntrerupere.
n Fig. 11.3 se prezint schema bloc a modulului CCP1 n modul de lucru Captur.


Fig. 11.3. Schema bloc a modulului CCP1 n mod de lucru Captur conform foii de catalog [15]

Evenimentele disponibile la care poate rspunde modulul de Captur pot fi selectate
prin intermediul biilor CCPxM3:0 din registrul CCPxCON[3:0] i sunt urmtoarele:
- front descresctor pe pinul CPPx (CCPxM3:0=0100)
- front cresctor pe pinul CPPx (CCPxM3:0=0101)
- al 4-lea front cresctor pe pinul CPPx (CCPxM3:0=0110)
- al 16-lea front cresctor pe pinul CPPx (CCPxM3:0=0111)
MODULUL CCP
190
La apariia unuia din evenimentele menionate mai sus, se poate realiza citirea valorii
stocate n regitrii de date CCPR1H:CCPR1L fie prin intermediul rutinei de tratare a
ntreruperii, fie ca urmare a interogrii bitului CCPxIF.
Relund exemplul de la nceputul paragrafului, dac timerul utilizat pentru a furniza
baza de timp este resetat dup fiecare captur, atunci datele disponibile n regitrii
CCPR1H:CCP1RL caracterizeaz timpul scurs de la ultimul eveniment (Fig. 11.4-a). O
variant alternativ presupune incrementarea continu a valorii timerului, perioada semnalului
fiind diferena ntre dou valori capturate succesive(Fig. 11.4-b). Avnd n vedere c modulul
CCP poate fi configurat prin program, se poate determina factorul de umplere al unui semnal
prin modificarea evenimentului de captur i realizarea diferenei ntre dou valori capturate
succesive (Fig. 11.4-c). Astfel, prin simpla schimbare a strii bitului CCPxM0 se poate opta
pentru frontul cresctor sau descresctor pentru a genera captura.
Dac se opteaz pentru utilizarea ambelor module de captur disponibile, acestea pot
fi configurate pentru a utiliza aceeai baz de timp (acelai timer) i acelai semnal de intrare.
Pentru determinarea perioadei ambele module vor fi configurate pentru a detecta acelai front
(de ex. cresctor) i se va calcula diferena ntre valorile capturate. Pentru determinarea
factorului de umplere cele dou module CCP vor fi configurate pentru detecta fronturi diferite
i se va calcula diferena ntre valorile capturate.


Fig. 11.4. Determinarea parametrilor unui semnal cu ajutorul modulului de captur



SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455
191
11.2.2 Configurarea capturii

Etapa de configurare a modulului de captur presupune parcurgerea urmtorilor pai:
configurarea pinului CCPx ca pin de intrare, prin setarea bitului corespunztor n
registrul TRIS
1

oprirea Timerului1 i/sau a Timerului3 (bitul TMR1ON, registrul T1CON[0],
respectiv bitul TMR3ON, registrul T3CON[0])
selectarea timerului care se utilizeaz cu modulul CCP configurat (biii
T3CCP2:T3CCP1, registrul T3CON[6,3])
configurarea Timerului1 i/sau a Timerului3 (registrul T1CON i/sau T3CON)
dac e cazul: iniializarea valorii Timerului1 i/sau a Timerului3 (regitrii
TMR1H:TMR1L i/sau TMR3H:TMR3L)
configurarea regimului de lucru pentru captur a modulului CCP utilizat (biii
CCPxM3:CCPxM0, registrul CCPxCON[3:0])
pornirea Timerului1 i/sau a Timerului3 (bitul TMR1ON, registrul T1CON[0],
respectiv bitul TMR3ON, registrul T3CON[0])
ateptarea realizrii capturii. Captura este marcat de setarea flagului indicator de
ntrerupere CCPxIF din registrul PIRx;
citirea rezultatului (regitrii CCPRxH:CCPRxL);
tergerea flagului indicator de ntrerupere (bitul CCPxIF, registrul PIRx);
dac e cazul: iniializarea unor noi valori pentru Timerul1 i/sau pentru Timerul3
(regitrii TMR1H:TMR1L i/sau TMR3H:TMR3L)

Dup cum s-a observat, etapa de configurare a modulului de captur vizeaz n
principal trei regitri de control:
- registrul de control al modulului CCPx: CCPxCON (detalii n paragraful 11.5)
- registrul de control al Timerului3 : T3CON
- registrul de control al Timerului1: T1CON
Pentru structura regitrilor de control ai timerelor se poate consulta Cap. 8
Temporizri hardware, iniializarea acestora fiind tratat pe larg acolo.
n general, iniializarea valorilor regitrilor TMR1H:TMR1L i/sau TMR3H:TMR3L se
rezum la simpla lor resetare n vederea realizrii unor noi capturi.

1
Pinii CCP1 i CCP2, asociai celor dou module CCP sunt multiplexai cu pinii RC2, respectiv RC1 i trebuie
configurai ca pini de ieire cu ajutorul registrului TRISC
MODULUL CCP
192
Pentru alegerea timerului utilizat n asociere cu modulele CCP, n registrul T3CON
(Fig. 11.5) exist prevzui doi bii de configurare: T3CCP2 i T3CCP1 (biii 3 i 6) care
ndeplinesc urmtorul rol:

7 0
RD16 T3CCP2 T3CKPS1 T3CKPS0 T3CCP1 T3SYNC TMR3CS TMR3ON
Fig. 11.5. Registrul T3CON: Timer3 Control Register

Biii 6,3 T3CCP2:T3CCP1 Bii selecie utilizare Timer1 i Timer3 impreun cu
modulele CCP1 i CCP2
1x = Timerul3 se utilizeaz mpreun cu ambele module CCP
01 = Timerul3 se utilizeaz mpreun cu modulul CCP2
Timerul1 se utilizeaz mpreun cu modulul CCP1
00 = Timerul1 se utilizeaz mpreun cu ambele module CCP


Exemplu
n continuare se prezint codul corespunztor configurrii i utilizrii modulului
de captur. Se consider cazul utilizrii modulului CCP1 cu baza de timp
furnizat de Timerul1.

CONFIGURARE_CAPTURA:
BSF TRISC, TRISC2 ;pin CCP1 de intrare
BCF T3CON, T3CCP2 ;utilizare Timer1 cu CCP1
BCF T3CON, T3CCP1
MOVLW b10100001 ;configurare i pornire
MOVWF T1CON ;Timer1
BCF CCP1CON,CCP1M3 ;captura la fiecare fr. cr.
BSF CCP1CON,CCP1M2
BCF CCP1CON,CCP1M1
BCF CCP1CON,CCP1M0

LOOP_TESTARE:
BTFSS PIR1, CCP1IF
GOTO LOOP_TESTARE
;Cnd se ajunge n acest punct, captura s-a terminat
;se citete rezultatul din CCPR1H:CCPR1L
;se resteaz flagul de ntrerupere


Se recomand configurarea timerelor astfel nct acestea s nu-i depeasc
capacitatea de numrare pe durata msurrii parametrilor semnalelor de intrare. De asemenea,
trebuie acordat o atenie deosebit citirii datelor rezultate n urma capturii. Citirea trebuie s
se realizeze ntre dou evenimente, deoarece modulul de captur i timerul asociat
funcioneaz continuu, iar valoarea din regitrii CCPRx poate fi suprascris ca urmare a
apariiei unui eveniment de captur.
SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455
193
11.3 COMPARARE

11.3.1 Funcionarea modulului CCP n modul de lucru Comparare

n modul de lucru comparare, valoarea stocat n regitrii CCPRxH:CCPRxL este tot
timpul comparat cu valoarea Timerului1 din regitrii TMR1H:TMR1L sau a Timerului3 din
regitrii TMR3H:TMR3L. La detectarea unei egaliti ntre cele dou valori de 16 bii se
seteaz bitul indicator de ntrerupere CCPxIF, iar dac bitul corespunztor CCPxIE este setat
se poate genera o ntrerupere. De asemenea, n funcie de configurarea realizat prin biii
CCPxM3:0 din registrul CCPxCON[3:0], se genereaz unul din evenimentele urmtoare:
- se schimb starea pinului CCPx: (CCPxM3:0=0010)
- se seteaz starea pinului CCPx: (CCPxM3:0=1000)
- se reseteaz starea pinului CCPx: (CCPxM3:0=1001)
- pinul CCPx rmne nemodificat putnd fi utilizat ca un pin de intrare ieire
obinuit, dar se genereaz o ntrerupere software ca urmare a setrii bitului
CCPxIF: (CCPxM3:0=1010)
- se genereaz un eveniment special care poate reseta valoarea timerului asociat.
n cazul modulului CCP2 se poate declana o conversie A/D
2
. De asemenea,
pinul CCPx rmne nemodificat putnd fi utilizat ca un pin de intrare ieire
obinuit: (CCPxM3:0=1011)
Primele trei moduri de funcionare (0010, 1000, 1001) ale modulului de comparare
presupun inializarea direciei pinului CCPx ca ieire n regitrul TRIS corespunztor.
n Fig. 11.6 se prezint schema bloc a modulului CCP1 n modul de lucru Comparare.

Fig. 11.6. Schema bloc a modulului CCP1 n mod de lucru Comparare conform foii de catalog [15]

2
Aceasta este singura diferen funcional ntre CCP1 i CCP2
MODULUL CCP
194
11.3.2 Configurarea comparrii

Etapa de configurare a modulului CCP n mod de lucru comparare presupune
parcurgerea urmtorilor pai:
configurarea pinului CCPx ca pin de ieire, prin resetarea bitului corespunztor n
registrul TRIS, dac se utilizeaz unul din cele trei moduri de funcionare care
genereaz eveniment pe pin.
oprirea Timerului1 i/sau a Timerului3 (bitul TMR1ON, registrul T1CON[0],
respectiv bitul TMR3ON, registrul T3CON[0])
selectarea timerului care se utilizeaz cu modulul CCP configurat (biii
T3CCP2:T3CCP1, registrul T3CON[6,3])
configurarea Timerului1 i/sau a Timerului3 (registrul T1CON i/sau T3CON)
iniializarea regitrilor CCPRxH:CCPRxL
configurarea regimului de lucru pentru comparare a modulului CCP utilizat (biii
CCPxM3:CCPxM0, registrul CCPxCON[3:0])
pornirea Timerului1 i/sau a Timerului3 (bitul TMR1ON, registrul T1CON[0],
respectiv bitul TMR3ON, registrul T3CON[0])
ateptarea realizrii unei comparaii reuite marcat de setarea flagului indicator de
ntrerupere CCPxIF din registrul PIRx;
tergerea flagului indicator de ntrerupere (bitul CCPxIF, registrul PIRx);

Etapa de configurare de mai sus poate fi completat cu configurarea sistemului de
ntreruperi sau cu iniializarea valorii regitrilor TMR1/3, dac aplicaia realizat necesit
acest lucru.


Exemplu
Se consider cazul unei aplicaii n care se dorete configurarea Timerului1
pentru a genera o ntrerupere la fiecare jumtate de secund cu ajutorul
modulului CCP n regim de lucru Comparare. Se consider un sistem cu o
frecven de lucru F
OSC
=4MHz.
Pentru a realiza acest lucru Timerul1 trebuie configurat n aa fel nct depirea
capacitii sale de numrare s se produc dup un timp mai mare de 500ms
apoi se va scurta ciclul de numrare la valoarea dorit prin utilizarea modulului
de comparare. Prin alegerea unei surse interne a impulsurilor numrate de
Timerului1 i al unui predivizor de 1:8 se poate obine o temporizare maxim de
SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455
195
0.524s. Pentru a scurta ciclul de numrare al Timerului1, regitrii de date ai
modulului CCP1 se vor ncrca cu valoarea 62500 (62500 x 1s x 8 = 500ms)
care corespunde reprezentrii hexa F424h.
De fiecare dat cnd Timerul1 va ajunge la aceast valoare se va reseta automat
i se va produce o ntrerupere dac bitul CCP1IE este setat, ntreruperile
provenite de la periferice sunt activate (PEIE = 1) i bitul global de activare a
ntreruperilor este i el setat (GIE =1).
Codul de iniializare este urmtorul:
MOVLW 0x24 ;iniializare CCPR1 cu 0xF424
MOVWF CCPR1L
MOVLW 0xF4
MOVWF CCPR1H
BCF T3CON, T3CCP2 ;utilizare Timer1 cu CCP1
BCF T3CON, T3CCP1
MOVLW b10110001 ;configurare i pornire Timer1
MOVWF T1CON ;predivizor 1:8, tact intern
BSF CCP1CON,CCP1M3 ;comparare cu generare eveniment
BCF CCP1CON,CCP1M2 ;special de resetare a Timer1
BSF CCP1CON,CCP1M1
BSF CCP1CON,CCP1M0
BCF PIR1, CCP1IF ;tergere flag ntrerupere
BSF PIE1, CCP1IE ;activare ntrerupere la comparare
BSF INTCON, PEIE ;activare ntreruperi periferice
BSF INTCON, GIE ;activare toate ntreruperile

Odat realizat iniializarea de mai sus sistemul va fi ntrerupt la fiecare 500ms.
Rutina de tratare a ntreruperii trebuie s asigure resetarea flagului de
ntrerupere CCP1IF. Deoarece pinul CCP1 nu este implicat n modul de lucru
1011 ales pentru comparare, acesta poate fi utilizat ca un pin de intrare-ieire
obinuit.


11.4 PWM

O gam larg de aplicaii ale sistemelor de calcul bazate pe microcontrolere presupune
comanda unor echipamente de for: nclzire, iluminat, motoare. O soluie eficient i ieftin
o reprezint utilizarea semnalelor PWM i unor comutatoare de for (tiristoare, tranzistori de
putere) pentru a realiza comanda echipamentelor.
Un exemplu de asemenea semnale se prezint n Fig.11.7. Amplitudinea medie a
acestui semnal va fi 5V x FU, unde FU este factorul de umplere al semnalului i reprezint
intervalul de timp dintr-o perioad (T) ct semnalul este n starea 1. Dac FU se modific
ntre 0 i 100%, amplitudinea medie a semnalului se va modifica proporional cu acesta.
Aceast tehnic poart denumirea de modulare n lime a impulsurilor.
MODULUL CCP
196

Fig.11.7. Modularea n lime a impulsurilor.
Semnal PWM cu factor de umplere de 10% (a), 50% (b), 90% (c)

n cazul microcontrolerelor PIC18, generarea semnalelor PWM este implementat cu
ajutorul Timerului2 i a unui comparator digital. n regitrii de configurare sunt stocate dou
valori: o valoare pentru factorul de umplere i o valoare pentru perioad. La fiecare
incrementare a timerului, comparatorul verific dac s-a ajuns la una din cele dou valori
setate. n caz afirmativ, se modific starea semnalului de ieire generat.
Principiul de funcionare este ilustrat n Fig. 11.8.

Fig.11.8. Principiul de funcionare al modulului CCP n regim de lucru PWM

Selectarea regimului de lucru PWM se realizeaz prin punerea biilor CCPxM3:0 din
registrul CCPxCON[3:0] n starea 11xx.
Configurarea care trebuie realizat n vederea generrii unui semnal PWM presupune
determinarea valorilor de iniializare pentru perioada semnalului i factorul de umplere al
semnalului.

Perioada semnalului PWM se stabilete prin intermediul valorii nscrise n
registrul PR2.

Calcularea valorii corespunztoare perioadei dorite se face utiliznd formula
urmtoare:
SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455
197
T = [(PR2)+1]4T
OSC
Predivizor (11.1)
unde:
- T este perioada semnalului PWM
- PR2 este valorea pe 8 bii care va trebui nscris n registrul PR2
- 4T
OSC
este tactul de execuie al instruciunilor.
- Predivizor este valoarea predivizorului tactului de incrementare a Timerului2
(Predivizor{1,4,16})specificat prin biii T2CON[1:0]
3
.

Factorul de umplere se stabilete prin intermediul unei valori de 10 bii care se
introduce n CCPRxL:CCPxCON<5:4>.

Registrul CCPxCON conine cei mai nesemnificativi doi bii (DCxB1:DCxB0), iar
CCPRxL conine octetul superior

Factorul de umplere se poate calcula dup formula:
FU = (CCPRxL:CCPxCON<5:4>)T
OSC
Predivizor (11.2)
unde:
- FU este factorul de umplere al semnalului PWM
- CCPRxL:CCPxCON<5:4> este valoarea de configurare de 10 bii
-
OSC
OSC
F
T
1
= este tactul oscilatorului
- Predivizor este valoarea predivizorului tactului de incrementare a Timerului2


Exemplu
Se analizeaz modul de calcul al parametrilor de configurare n vederea
generrii unui semnal PWM cu perioada T
PWM
= 100s, factor de umplere FU =
50s, implementat cu ajutorul unei frecvene de lucru F
OSC
= 20MHz i cu un
predivizor al timerului Predivizor=16.
Utiliznd formula (11.1) obinem:
30 25 . 30 1
16 4
20 100
1
4
2 =


=
MHz s
edivizor Pr
F T
PR
OSC
(11.3)
Utiliznd formula (11.2) obinem:

3
Pentru regimul de lucru PWM, biii de interes din registrul T2CON sunt doar cei legai de activarea /
dezactivarea timerului 2, i cei legai de algerea predivizorului. Postdivizorul nu va fi utilizat. Pentru detalii
privind structura registrului T2CON se poate consulta Cap. 8 Temporizri hardware.
MODULUL CCP
198
( )
63 5 . 62
16
20 50
4 : 5 :
=

=
=

=
MHz s

edivizor Pr
F FU
CCPxCON CCPRxL
OSC
(11.4)
Astfel, perioada semnalului PWM va fi configurat prin nscrierea n registrul
PR2 a valorii 30 (=1Eh), iar factorul de umplere al semnalului PWM va fi
configurat prin nscrierea valorii 63 n perechea CCPRxL:CCPxCON<5:4>.
ntruct reprezentarea binar pe zece bii a valorii 63 este (0000111111)
2
,
rezult c DCxB1=1, DCxB0=1, iar CCPRxL=0Fh.

Odat determinate valorile de configurare pentru perioada i factorul de umplere a
semnalului PWM se poate trece la etapa de iniializare, care presupune parcurgerea
urmtorilor pai:
configurarea pinului CCPx ca pin de ieire, prin tergerea bitului corespunztor n
registrul TRIS
oprirea Timerului2 (bitul TMR2ON, registrul T2CON[2])
configurarea perioadei semnalului PWM prin nscrierea valorii determinate n registrul
PR2
configurarea factorului de umplere al semnalului PWM prin nscrierea valorii
determinate n perechea CCPRxL:CCPxCON[5:4]
configurarea predivizorului (biii T2CKPS1:T2CKPS0, registrul T2CON[1:0])
pornirea Timerului2 (bitul TMR2ON, registrul T2CON[2])
configurarea regimului de lucru PWM pentru modulul CCP utilizat (biii
CCPxM3:CCPxM0, registrul CCPxCON[3:0])


Exemplu
Pentru a exemplifica etapa de iniializare se va considera cazul analizat anterior,
avnd parametrii de configurare determinai prin relaiile (11.3) i (11.4).

CONFIGURARE_PWM:
BCF TRISC, TRISC2 ; pin CCP1 de ieire
BCF T2CON, TMR2ON ; oprire Timer2
MOVLW 0x1E ; configurare T
MOVWF PR2
MOVLW 0x0F ; configurare FU
MOVWF CCPR1L
BSF CCP1CON, DC1B1
BSF CCP1CON, DC1B0
BSF T2CON, T2CKPS1 ; predivizor 16
BSF T2CON, T2CKPS0
BSF T2CON, TMR2ON ; pornire Timer2
SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455
199
BSF CCP1CON, CCP1M3 ; configurare mod PWM
BSF CCP1CON, CCP1M2
BSF CCP1CON, CCP1M1
BSF CCP1CON, CCP1M0


Una din aplicaiile n care se utilizeaz n mod frecvent semnalele PWM se refer la
comanda servomotoarelor. Acestea sunt servomecanisme, care au n structura lor un motor de
curent continuu cuplat cu un senzor de poziie n cadrul unei bucle de reglare automat
controlat de un regulator intern (de obicei un circuit integrat dedicat). Comanda
servomotoarelor presupune aplicarea unui semnal PWM cu anumite caracteristici pe intrarea
4

sa de comand. n acest fel se transmite ctre bucla de reglare din structura servomotorului un
semnal de referin care conduce la poziionarea axului motorului la un anumit unghi.
Principiul de comand al servomotoarelor este pus n eviden n Fig. 11.9.


Fig.11.9. Principiul de comand al servomotoarelor cu ajutorul semnalelor PWM

Astfel, pentru comanda servomotoarelor se folosesc semnale PWM cu perioada
T
PWM
=20 ms. Poziia unghiular a axului motorului este determinat de durata impulsurilor
aplicate (factorul de umplere) pe intrarea de comand. De exemplu, un impuls de 1.5 ms va
determina poziionarea motorului la un unghi de 90. Aceast poziie unghiular corespunde
poziiei neutre a servomotorului n care cursa sa n ambele direcii este aceeai. Avnd n
vedere diferitele variante constructive de servomotoare existente i limitrile care pot fi
impuse micrii de rotaie ale acestora, este bine de tiut c fiecare servomotor va avea o
poziie neutr
5
a axului care corespunde unui semnal de comand PWM cu T
PWM
=20ms i

4
n general servomotoarele dispun de trei intrri, dou se utilizeaz pentru alimentare i cea de-a treia pentru
comand.
5
Aceast poziie unghiular corespunde unui unghi de 90 dac limitele de rotaie ale motorului sunt cuprinse
ntre 0 i 180, sau unei alte poziii (aflate la mijlocul intervalului) dac micarea de rotaie a motorului este
limitat ntre alte unghiuri.
MODULUL CCP
200
FU=1.5ms. Durata minim i cea maxim a impulsurilor de comand care determin rotirea
servomotorului la poziie unghiular valid poate s difere de la un productor la altul, dar n
general durata minim a impulsurilor este de 1 ms, iar cea maxim de 2 ms. Pentru aceste
dou valori ale impulsului de comand axul motorului se va poziiona la cele dou capete ale
intervalului n care este limitat micarea de rotaie a motorului.
Din pcate implementarea comenzii pentru servomotoare cu ajutorul modulului PWM,
n cazul unor frecvene de lucru ale microcontrolerului ordinul MHz, devine imposibil avnd
n vedere valorile de configurare care rezult prin utilizarea relaiilor (11.1) i (11.2). O
soluie la aceast problem ar putea fi reducerea frecvenei de lucru sau realizarea semnalelor
PWM necesare prin alte mecanisme (de ex. Timere, CCP n mod de lucru Comparare etc.). De
altfel, pentru toate funcionalitile oferite prin cele trei moduri de lucru ale modulelor CCP se
pot gsi soluii de implementare alternative, care nu necesit n mod neaprat existena CCP
n structura microcontrolerului.

11.5 REGISTRUL CCPxCON

Selectarea regimului de lucru pentru cele dou module CCP se face prin intermediul
regitrilor de control CCPxCON. Deoarece factorul de umplere, n modul de lucru PWM se
specific prin intermediul a 10 bii, regitrii CCPxCON conin cei mai nesemnificativi doi bii
care intervin n configurarea factorului de umplere dorit.
n Fig. 11.9 se prezint structura regitrilor CCPxCON, urmat de descrierea biilor.

7 0
- - DCxB1 DCxB0 CCPxM3 CCPxM2 CCPxM1 CCPxM0
Fig. 11.9. Regitrii CCPxCON: CCPx Control Register

Biii 7-6 Neimplementai
Biii 5-4 DCxB1:DCxB0 Utilizai la specificarea factorului de umplere al semnalului
PWM produs de modulul CCPx
Biii 3-0 CCPxM3:CCPxM0 Selectarea regimului de lucru pentru modulul CCPx
0000 = Modul CCPx dezactivat
0001 = Rezervat
0010 = Regim de lucru Comparare. Schimbarea strii pinului CCPx
0011 = Rezervat
0100 = Regim de lucru Captur. Captur la fiecare front descresctor
SISTEME CU MICROPROCESOARE. MICROCONTROLERUL PIC18F4455
201
0101 = Regim de lucru Captur. Captur la fiecare front cresctor
0110 = Regim de lucru Captur. Captur la fiecare al 4-lea front cresctor
0111 = Regim de lucru Captur. Captur la fiecare al 16-lea front cresctor
1000 = Regim de lucru Comparare. Setare pin CCPx
1001 = Regim de lucru Comparare. Resetare pin CCPx
1010 = Regim de lucru Comparare. Generare ntrerupere soft
1011 = Regim de lucru Comparare. Generare eveniment special (reset timer,
declanare conversie A/D pentru modulul CCP2)
11xx = Regim de lucru PWM



Concluzii
Modulele CCP utilizate n asociere cu Timerele 1, 2 i 3 asigur, n
funcie de configurare, capturarea strii Timerului 1/3 la apariia unui
eveniment extern (front pe pin), compararea continu a strii Timerului
1/3 cu o valoare prestabilit i generarea unui eveniment la realizarea
egalitii i generarea unor impulsuri modulate n lime.
Aceste funcionaliti permit msurarea parametrilor anumitor semnale,
implementarea unor evenimente temporizate (ex. eantionri), controlul
unor circuite analogice din domeniul digital etc.


1. Care este principiul de funcionare al modulului CCP n mod de
lucru captur?
2. Care este principiul de funcionare al modulului CCP n mod de
lucru comparare?
3. Modulele CCP n modurile de lucru captur i comparare
funcioneaz n asociere cu Timerul1 sau Timerul3. Cum se
selecteaz timerul utilizat?
4. Cum se poate determina perioada unui semnal dreptunghiular de
intrare cu ajutorul modulului captur?
5. Cum se poate genera un semnal dreptunghiular cu factor de umplere
de 50% cu ajutorul modulului comparare?

ntrebri de
autoevaluare
6. Cum se poate modifica factorul de umplere al unui semnal PWM
generat cu ajutorul modulului CCP n mod de lucru PWM?

MODULUL CCP
202

Termeni
eseniali
Captur
Mod de lucru n care apariia unui eveniment extern determin salvarea
valorii timerului n regitrii de date CCP
CCP
Modul de Captur / Compare / PWM
Comparare
Mod de lucru n care atingerea egalitii valorii timerului cu o valoare
prestabilit determin generarea unui eveniment
Comparator digital
Circuit care permite realizarea unei comparaii ntre dou valori binare
Factor de umplere
Intervalul de timp dintr-o perioad ct semnalul este n starea 1
Predivizor
Circuit n structura timerelor care permite incrementarea la fiecare n
fronturi ale semnalului de tact
PWM
En. Pulse Width Modulation. Modularea n lime a impulsurilor. Tehnic
ce permite controlul circuitelor analogice din domeniul digital.
Timer
Circuit de temporizare

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