Modulo CCP

Click here to load reader

  • date post

    14-Apr-2016
  • Category

    Documents

  • view

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