Modulo CCP

Click here to load reader

  • date post

    14-Apr-2016
  • Category

    Documents

  • view

    27
  • download

    5

Embed Size (px)

description

CCP

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 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

  • MCU & MPU

    PWM

    MDULO CCP

    30

    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;

  • MCU & MPU

    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.

    MDULO CCP

    31

  • MCU & MPU

    PWM

    Princpio: variao do duty-cycle com VRMS.

    MDULO CCP

    32

    !

    Vrms =1T v

    2 (t)dtt1

    t1 +T"

  • MCU & MPU

    PWM

    MDULO CCP

    33

    Registradores associados com a operao PWM

  • MCU & MPU

    Exerccios

    MDULO CCP

    34

    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 e PORTD), 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.

  • MCU & MPU

    Exerccios

    MDULO CCP

    35

    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.

  • MCU & MPU ESTRUTURA BSICA DE UM PROGRAMA EM LINGUAGEM C

    36

    Bibliografia

  • MCU & MPU BIBLIOGRAFIA

    37

    PEREIRA, F.,Microcontroladores PIC Programao em C, rica, 7 ed., 2009.

    Microchip Technology, MPLAB XC8 C Compiler Users Guide, 2012. Microchip Technology, MPLAB XC8 Getting Started Guide, 2013. MPASM User's Guide, Microchip Technology Inc., 2005. PIC16F87xA Data Sheet, Microchip Technology Inc., 2003. PICmicro Mid-Range MCU Family Reference Manual, Microchip

    Technology Inc., 1997. M. Predko, Programming and Customizing the PIC Microcontroller,

    3rd. Ed., McGraw-Hill, 2008. F. Pereira, Microcontroladores PIC: Tcnicas Avanadas 16F627 e

    16F628, 5a. Ed., rica, 2008. Perez, E. V. and Areny, R. P., Microcontrollers: fundamentals and

    applications with PIC, CRC Press, 2009.