Modulo CCP
Modulo CCP
Modulo 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
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.
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
Exemplo de Aplicação:
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
http://eng-serve.com/pic/pic_pwm.html
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)
}