Modulo CCP
date post
14-Apr-2016Category
Documents
view
24download
5
Embed Size (px)
description
Transcript of Modulo CCP
Prof. Rodrigo Ramos
Mdulo CCP
Microcontroladores & Microprocessadores
MCU & MPU ESTRUTURA BSICA DE UM PROGRAMA EM LINGUAGEM C
2
Mdulo CCP (Capture/Compare/PWM)
MCU & MPU
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
MDULO CCP
3
MCU & MPU
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
4
MCU & MPU
Introduo
CCPxCON: Registrador de controle de operao
Recursos de Temporizadores:
MDULO CCP
5
MCU & MPU
Introduo
MDULO CCP
6
Registradores de Controle CCP1CON e CCP2CON (endereos 17h e 1Dh) Bits 3-0 (bit CCPxM3: CCPxM0 bits de seleo de modo de operao) Estes bits selecionam o modo como operaro os blocos CCP1 e CCP2.
MCU & MPU
Introduo
MDULO CCP
7
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)
MCU & MPU
Introduo
MDULO CCP
8
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.
MCU & MPU ESTRUTURA BSICA DE UM PROGRAMA EM LINGUAGEM C
9
Mdulo de Captura
MCU & MPU
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.
Evento configurado atravs de CCPxCON Timer1 deve operar no modo temporizador ou contador
sncrono Pinos RC1/CCP2 ou RC2/CCP1 devem ser configurads
como entrada.
MDULO CCP
10
MCU & MPU
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.
MDULO CCP
11
MCU & MPU
Captura
MDULO CCP
12
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.
MCU & MPU
Captura
MDULO CCP
13
Exemplo: Para um clock de 4 MHz, com pre-escalonador 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.
MCU & MPU
Captura
1. Configure os bits de controle CCPxCON 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)
MDULO CCP
14
Medindo o perodo de uma onda quadrada
MCU & MPU
Captura
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;
5. O resultado obtido em 4(a) o perodo desejado.
MDULO CCP
15
Medindo o perodo de uma onda quadrada
MCU & MPU
Captura
1. Configure os bits de controle CCPxCON 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).
MDULO CCP
16
Medindo largura de pulsos
MCU & MPU
Captura
4. Quando uma interrupo CCP ocorrer: a) Armazene t1;
5. Configure CCPxCON para capturar a cada evento de borda de descida;
6. Quando uma interrupo CCP ocorrer: a) Subtraia o tempo capturado (t2) do tempo armazenado
(t1) e armazene-o; b) Use o flag do TMR1 para sinalizar overflow; c) Ressete o flag do TMR1.
MDULO CCP
17
Medindo largura de pulsos
MCU & MPU
Captura
Configure os bits de controle CCPxCON para capturar a cada evento de borda de subida;
Configure o prescaler do TMR1 considerando TMAX (perodo mximo), sem permitir que o mesmo atinja overflow;
Habilite a interrupo de CCP (CCPxIE bit);
MDULO CCP
18
Medindo o Duty cycle
MCU & MPU
Captura
4. Quando uma interrupo CCP ocorrer: a) Armazene t1;
5. Configure CCPxCON para capturar a cada evento de borda de descida;
6. Quando uma interrupo CCP ocorrer: a) Subtraia o tempo capturado (t2) do tempo
armazenado (t1) e armazene-o; b) Use o flag do TMR1 para sinalizar overflow; c) Ressete o flag do TMR1.
MDULO CCP
19
Medindo o Duty cycle
MCU & MPU
Captura
7. Configure os bits de controle CCPxCON para capturar a cada evento de borda de subida;
8. Configure o prescaler do TMR1 considerando TMAX (perodo mx.), sem permitir que o mesmo atinja overflow;
9. Habilite a interrupo de CCP (CCPxIE bit); 10. Quando uma interrupo CCP ocorrer:
a) Armazene t3; b) Subtraia o tempo armazenado (t3) do tempo capturado (t2) e
armazene-o; c) Use o flag do TMR1 para sinalizar overflow.
11. Divida o tempo armazenado em 10 b) por 6 a) para obter o duty cycle (W/T).
MDULO CCP
20
Medindo o Duty cycle
MCU & MPU ESTRUTURA BSICA DE UM PROGRAMA EM LINGUAGEM C
21
Mdulo de Comparao
MCU & MPU
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;
Tudo vai depender da programao de CCPxCON; Pinos RC1 e/ou RC2 devem ser configurados como
sada. CCPxCON configura o nvel do pino CCPx; O flag CCPxIF setado quando a coincidncia ocorre,
podendo gerar uma interrupo se habilitada.
MDULO CCP
22
MCU & MPU
Comparao
MDULO CCP
23
MCU & MPU
Comparao
MDULO CCP
24
MCU & MPU
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.
MDULO CCP
25
MCU & MPU ESTRUTURA BSICA DE UM PROGRAMA EM LINGUAGEM C
26
Mdulo PWM
MCU & MPU
PWM
MDULO CCP
27
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.
MCU & MPU
PWM
MDULO CCP
28
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.
MCU & MPU
PWM
MDULO CCP
29
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