Académique Documents
Professionnel Documents
Culture Documents
Microcontroladores &
Microprocessadores
Prof. Rodrigo Ramos
MDULO CCP
Introduo
Mdulos usados para medio e controle de
sinais temporais baseados em largura de
pulsos.
Formado por registrador de 16 bits,
operando como:
Registrador de captura
Registrador de comparao
Registrador de ciclo de trabalho (duty
cycle) no modo PWM
3
MDULO CCP
Introduo
No PIC16F877A, existem dois mdulos CCP1
e CPP2, que operam de forma idntica,
exceto pelo Special Event Trigger.
Divididos nos registradores de 8 bits CCPRxL
e CCPRxH, onde x 1 ou 2.
Special Event Trigger gerado no modo
comparao quando h concordncia entre
os valores do Timer1 e do CCPRx.
Resseta Timer1 nos mdulos 1 e 2;
Pode comear converso A/D no mdulo 2.
MDULO CCP
Introduo
CCPxCON: Registrador de controle de
operao
Recursos de Temporizadores:
MDULO CCP
Introduo
Registradores de Controle CCP1CON e CCP2CON
(endereos 17h e 1Dh)
MDULO CCP
Introduo
0000 = Modos Captura/Comparao/PWM desligados (reseta mdulo
CCPx )
0100 = Modo captura, a cada transio negativa (10)
0101 = Modo captura, a cada transio positiva (01)
0110 = Modo captura, a cada 4 transies positivas (10)
0111 = Modo captura, a cada 16 transies positivas (10)
1000 = Modo comparao, seta pino de sada (bit CCPxIF setado)
1001 = Modo comparao, reseta pino de sada (bit CCPxIF setado)
1010 = Modo comparao, gera interrupo (bit CCPxIF setado, pino
CCPx no afetado)
7
MDULO CCP
Introduo
1011 = Modo comparao, ativa Special Event trigger(bit CCPxIF
setado, pino CCPx no afetado); CCP1 resseta TMR1; CCP2
resseta TMR1 e inicia uma converso A/D (se mdulo A/D
habilitado).
11xx = Modo PWM
Bits 5-4 (bits CCPxX:CCPxY bits menos significativos do
PWM) Estes bits representam os dois bits menos significativos
do valor de duty-cycle do sinal PWM.
Modo Captura: No usado
Modo Comparao: No usado
Modo PWM: Dois bits LSB do duty-cycle do sinal PWM. Os oito
MSBs so gravados no registrador CCPRxL.
Mdulo de Captura
MDULO CCP
Captura
Espera que um evento ocorra em um pino especfico do
MCU;
Eventos:
A cada borda de descida do sinal;
A cada borda de subida do sinal;
A cada 4 borda de subida do sinal;
A cada 16 Borda de subida do sinal.
10
MDULO CCP
Captura
Quando o evento ocorre, os 16 bits do TMR1
so capturados e colocados em
CCPRxH:CCPRxL.
Flag CCPxIF setado.
Ocorrncia de novo evento sobrescreve CCPRx.
11
MDULO CCP
Captura
Em quais situaes devo usar esse
mdulo?
Situaes onde necessrio medir o tempo
percorrido entre dois eventos consecutivos.
Exemplo:
Acelermetros: variam o duty cycle de uma
onda quadrada proporcionalmente
acelerao do sistema que est sendo medido.
12
MDULO CCP
Captura
Exemplo: Para um clock de 4 MHz, com preescalonador do Timer 1 em 1:1, teremos uma freq. de
operao de 1 MHz, ou cada incremento do Timer 1
ocorrer a cada 1 us.
Assim, se aps uma captura o valor no par de
registradores CCPR1L:CCPR1H for igual a 100010,
significa que o perodo do sinal aplicado ao pino RC2/
CCP1 de 1 ms.
13
MDULO CCP
Captura
Medindo o perodo de
uma onda quadrada
1. Configure os bits de controle
CCPxCON<3:0> para capturar a cada
borda de subida;
2. Configure o prescaler do TMR1 levando
TMAX em considerao; portanto. sem
deixar que o mesmo atinja overflow;
3. Habilite a interrupo de CCP (CCPxIE bit)
14
MDULO CCP
Captura
Medindo o perodo de
uma onda quadrada
4. Quando uma interrupo CCP ocorrer:
a) Subtraia o tempo armazenado (t1) do tempo
capturado (t2) e armazene-o. Use o flag do
TMR1 para sinalizar overflow;
b) Armazene o t2;
c) Ressete o flag do TMR1;
MDULO CCP
Captura
Medindo largura de
pulsos
1. Configure os bits de controle
CCPxCON<3:0> para capturar a cada
evento de borda de subida;
2. Configure o prescaler do TMR1
considerando WMAX (largura mxima) sem
permitir que o mesmo atinja overflow;
3. Habilite a interrupo de CCP (CCPxIE bit).
16
MDULO CCP
Captura
Medindo largura de
pulsos
4. Quando uma interrupo CCP ocorrer:
a) Armazene t1;
17
MDULO CCP
Captura
Medindo o Duty cycle
18
MDULO CCP
Captura
Medindo o Duty cycle
4. Quando uma interrupo CCP ocorrer:
a) Armazene t1;
MDULO CCP
Captura
Medindo o Duty cycle
7.
8.
9.
Armazene t3;
b)
c)
20
Mdulo de Comparao
21
MDULO CCP
Comparao
Nesse mdulo, o valor do registrador CCPRx
comparado com o registrador do TMR1;
Quando uma coincidncia ocorre, o pino RC1/CCP2
ou RC2/CCP1 ficam:
Em nvel lgico 1;
Em nvel lgico 0;
Fica inalterado;
MDULO CCP
Comparao
23
MDULO CCP
Comparao
24
MDULO CCP
Comparao
Em quais situaes devo usar esse mdulo?
Situaes onde necessrio contar de um tempo inicial
(t0) at um determinado tempo t;
Esse mdulo til para gerar aes em intervalos de
tempo muito precisos;
Diferente de timers, que necessitam que um certo valor
seja pr carregado em seus registradores a cada vez.
Exemplos:
Atualizar LCDs n vezes durante um certo perodo;
Gerar interrupes ou perodos de amostragem em
intervalos de tempo fixos para RTOS (Real Time Operating
Systems);
Gerar interrupes ou perodos de amostragem de um
sinal analgico em intervalos de tempo fixos.
25
Mdulo PWM
26
MDULO CCP
PWM
Sinal PWM (pulse width modulation) ciclo de trabalho de uma
forma de onda quadrada peridica alterado.
O mdulo CCPx produz um sinal PWM com uma resoluo de
at 10 bits.
Um sinal PWM caracterizado pelo seu perodo e o ciclo de
trabalho (duty cycle), que corresponde ao tempo em que o sinal
permanece em nvel alto.
27
MDULO CCP
PWM
Quando TMR2 igual a PR2, os
seguintes eventos ocorrem:
TMR2 apagado;
O pino CCP1 setado (exceto
se o duty cycle do PWM = 0%,
quando o CCP1 no ser
setado);
O duty cycle do PWM copiado
de CCPR1L para CCPR1H.
28
MDULO CCP
PWM
O perodo do sinal PWM especificado pelo registrador PR2:
TPWM = (N + 1) 4 TOSC P
O duty cycle do PWM definido escrevendo no registrador
CCPR1L (bits mais significativos) e nos bits 5 e 4 do registrador
CCP1CON.
Determinao do perodo de duty-cycle em termos de tempo:
TON (Duty Cycle do PWM) = M TOSC P
Duty cycle (%) = (TON/TPWM) 100
N: valor de PR2
P: valor do prescaler TMR2
M: nmero decimal correspondente aos 10 bits CCPRxL:CCPxCON<5:4>29
MDULO CCP
PWM
Passos para ajustar o mdulo CCP para funcionar no
modo PWM:
Ajustar o perodo do sinal PWM, escrevendo um valor
adequado no registrador PR2;
Ajustar o duty-cycle do sinal PWM, escrevendo um
valor adequado para o registrador CCPR1L e para os
bits 5 e 4 do registrador CCP1CON;
Configurar os pinos RC2/CCP1 ou RC1/CCP2 como
uma sada;
Configurar o mdulo CCP1 ou CCP2 para operao no
modo PWM;
Ajustar o valor do pr-escalonador e habilitar o Timer 2
configurando o registrador T2CON;
30
MDULO CCP
PWM
Em quais situaes devo usar esse mdulo?
Situaes onde necessrio converter informao
em um canal de comunicao;
Situaes onde necessrio controlar a potncia
(corrente) entregue a uma carga;
Exemplos:
Controle de um motor de CC (motor DC);
Gerar uma sada analgica (Vrms = duty cycle x
Vmax): conversor D/A;
Variar a intensidade de luminosidade de um LED;
Telecomunicaes;
Efeitos de udio.
31
MDULO CCP
PWM
Princpio: variao do duty-cycle com
VRMS.
1
Vrms =
T
"
t1 +T
t1
v 2 (t)dt
32
MDULO CCP
PWM
Registradores associados com a operao PWM
33
MDULO CCP
Exerccios
1) Escreva um programa em assembly para medir o
perodo de um sinal aplicado ao pino RC2/CCP1 (use o
gerador de sinais). Coloque o resultado nas portas B e D
(PORTB<RB7:RB0> e PORTD<RD7:RD0>), acionando
leds para mostrar o resultado do perodo (como um
nmero binrio).
2) Escreva um programa em assembly para gerar uma
forma de onda PWM com 'duty-cycle' de 30% e perodo
TPWM = 25 us (use P=1 para prescaler). Utilize o
osciloscpio para comprovar o resultado e um clock de
20MHz.
34
MDULO CCP
Exerccios
3) Escreva um programa em C do XC8 para gerar um
sinal PWM com TPWM = 25us e duty cycle varivel de 10 a
90%. Utilize duas teclas externas: uma para incrementar
e outra para decrementar o valor percentual do duty
cycle, com incrementos/decrementos de 10%.
Mostre o valor percentual do duty cycle em dois displays
de 7 segmentos.
4) Usar o mdulo PWM do PIC16F877A para controlar a
intensidade do brilho de um LED. Faa a implementao
em hardware do sistema usando o kit AcePic.
35
Bibliografia
36
BIBLIOGRAFIA