Modulo CCP

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 16

ET53C - SISTEMAS DIGITAIS

Módulo CCP (Capture/Compare/PWM)

Profs.: Glauber G. O. Brante e Mariana Furucho


[email protected] e [email protected]

UTFPR – Universidade Tecnológica Federal do Paraná


DAELT – Departamento Acadêmico de Eletrotécnica

Profs. Glauber Brante e Mariana Furucho (UTFPR) Módulo CCP 1 / 16


Módulo CCP

Descrição:
O PIC 16F877A possui dois módulos de CCP (CCP1 e CCP2) que são
praticamente idênticos.

Nomenclatura:
CCPxCON: CCP1CON e CCP2CON - Registrador de configuração
CCPRxH: CCPR1H e CCPR2H - Parte alta do valor de controle
CCPRxL: CCPR1L e CCPR2L - Parte baixa do valor de controle
CCPx: CCP1 (RC2) e CCP2 (RC1) - Pinos relacionados

Profs. Glauber Brante e Mariana Furucho (UTFPR) Módulo CCP 2 / 16


Módulo CCP

Modo Captura:
Tem por objetivo a contagem de tempo entre dois eventos ocorridos
em um dos pinos CCPx.
Utiliza como base de tempo o Timer1 (TMR1).

Modo Comparação:
Compara valores entre os registros TMR1 e CCPR. Também permite ao
programador gerar um sinal quando determinado tempo for percorrido.

Modo PWM:
Pulse Width Modulation – gera sinais de frequência e largura de pulso
variáveis. Utiliza TMR2.

Profs. Glauber Brante e Mariana Furucho (UTFPR) Módulo CCP 3 / 16


Modo Captura

Valor do registro TMR1 (Timer 1) é copiado para o registro CCPRx em um dos


eventos de borda, configurado por (CCPxM3–CCPxM0) no CCPxCON:
0100: Borda de descida (1 → 0)
0101: Borda de subida (0 → 1)
0110: Na 4a borda de subida
0111: Na 16a borda de subida
OBS: Finalidade do preescaler é o aumento da precisão do sistema. Por exemplo, erro
máximo de Tcy/16. Flag CCPxIF ativada e, se essa interrupção estiver ligada, ela
irá acontecer.

Profs. Glauber Brante e Mariana Furucho (UTFPR) Módulo CCP 4 / 16


Modo Comparação

Valor do registrador CCPx é constantemente comparado com o valor atual de


TMR1. Quando os valores coincidem, dependendo da configuração
(CCPxM3–CCPxM0), pode ocorrer:
1000: (Set): CCPxIF é setado
1001: (Clear): CCPxIF é zerado
1010: (Interrupt): CCPxIF é setado + geração
(
de interrupção
CCP1 reseta TMR1
1011: (Special Event): CCPxIF é setado +
CCP2 reseta TMR1 e inicia conversão A/D

Profs. Glauber Brante e Mariana Furucho (UTFPR) Módulo CCP 5 / 16


Módulo PWM

Descrição:
Tem por objetivo obter uma tensão analógica variável a partir de um
sinal digital.
Modulação por Largura de Pulso significa que temos uma onda de
frequência constante (período fixo) mas com largura de pulso varíavel
(duty cycle).

Período:
V(t): Vpulso (para 0 <= t <= tp) e 0 (para tp < t <=T), sendo tp a
duração do pulso em nível lógico 1 e Vpulso a tensão de pulso do sinal
PWM.

Vdc:
Então temos que a tensão contínua resultante será:
Vdc=(tp/T)*Vpulso

Profs. Glauber Brante e Mariana Furucho (UTFPR) Módulo CCP 6 / 16


Modo PWM

Profs. Glauber Brante e Mariana Furucho (UTFPR) Módulo CCP 7 / 16


Modo PWM - Exemplos

Exemplo de Aplicação:

Profs. Glauber Brante e Mariana Furucho (UTFPR) Módulo CCP 8 / 16


Modo PWM - Exemplos
Exemplo de Aplicação:

Profs. Glauber Brante e Mariana Furucho (UTFPR) Módulo CCP 9 / 16


Modo PWM

O período do PWM (T) é diretamente controlado pelo Timer2 através


do registrador PR2. Sempre que TMR2 = PR2, o timer é zerado.
Nesse momento, um novo período do PWM é iniciado. Assim, temos
as fórmulas:
Período do PWM = (PR2 + 1) × 4Tosc × (Prescale do TMR2)
Pulso do PWM = (CCPRxL:CCPxCON<5:4>) × 4Tosc × (Prescale do TMR2)
Duty Cycle = Pulso/Período
 
log f fosc
Resolução = PWM
log(2)
bits

Frequência do PWM 1,22 kHz 4,90 kHz 16,61 kHz 76,92 kHz 153,85 kHz 200,0 kHz
TMR2 Prescale 16 4 1 1 1 1
PR2 65h 65h 65h 19h 0Ch 09h
Resolução Max. 8 8 8 6 5 5

Profs. Glauber Brante e Mariana Furucho (UTFPR) Módulo CCP 10 / 16


Modo PWM

http://eng-serve.com/pic/pic_pwm.html

Profs. Glauber Brante e Mariana Furucho (UTFPR) Módulo CCP 11 / 16


Programação em MikroC

Funções da Biblioteca do MikroC:

PWM1_Init (long freq);


PWM1_Set_Duty (unsigned short duty_ratio);
PWM1_Start ();
PWM1_Stop ();

void main () {
PWM1_Init (5000) ; // Inicializa Módulo PWM
PWM1_Set_Duty (127) ; // Duty cycle = 50%
PWM1_Start () ; // Inicia PWM
TMR2 =0; // !!! BUG PROTEUS !!!

while (1)
}

Profs. Glauber Brante e Mariana Furucho (UTFPR) Módulo CCP 12 / 16


Servo-Motor

Profs. Glauber Brante e Mariana Furucho (UTFPR) Módulo CCP 13 / 16


Servo-Motor

Profs. Glauber Brante e Mariana Furucho (UTFPR) Módulo CCP 14 / 16


Motor DC

Profs. Glauber Brante e Mariana Furucho (UTFPR) Módulo CCP 15 / 16


Motor DC

Profs. Glauber Brante e Mariana Furucho (UTFPR) Módulo CCP 16 / 16

Você também pode gostar