You are on page 1of 28

Microprocessadores

Aula 10: Acesso indireto memria; Interfaces de Entrada e Sada Parte 1: Mdulo CCP Captura, Comparao e PWM

Referncia para a aula:


1 Apostila: Instrues e Diretivas [Xerox]; 2 Folha de dados (Datasheet): PIC16F877 [Disponvel na internet, site da Microship]; 3 CAP. 5: SCHILDT, H. C completo e total [biblioteca];

Prof.: Edgar Campos Furtado


edgar@ufsj.edu.br
Sala: 217.2

ACESSO INDIRETO MEMRIA DE DADOS


Acesso direto memria de dados: Primeiro seleciona-se o banco de registradores, por meio dos bits RP1 e RP0 do STATUS, em seguida o registrador desejado acessado informando o endereo do mesmo na instruo (7bits).

UFSJ CAP Edgar C. Furtado

AULA-10

ACESSO INDIRETO MEMRIA DE DADOS


Exemplo: Assumindo-se que necessrio zerar o contedo do registrador TRISA. No estado inicial (aps energizao ou reset) tem-se que: RP1=RP0=0. Logo, inicialmente o banco 0 est selecionado.
; MICROPROCESSADORES ; -- ARQUIVO DE DEFINIES: #INCLUDE <P16F877.INC> __CONFIG _XT_OSC & _WDT_OFF & _PWRTE_OFF & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF ; -- VETOR DE RESET: ORG 0X00 GOTO INICIO ; -- INCIO INTERRUPO: ORG 0X04 RETFIE ; -- INCIO DO PROGRAMA: INICIO BSF STATUS,RP0 Seleo do banco de memria 1 BCF STATUS,RP1 CLRF TRISA ... ; -- FIM DO PROGRAMA: END

Banco 0

Banco 1

Acessar um dos 128 registradores do referido banco de memria. Cdigo da instruo CLRF: 0 0 0 0 0 1 1 f f f f f f f 85h = 1000 0101

UFSJ CAP Edgar C. Furtado

AULA-10

ACESSO INDIRETO MEMRIA DE DADOS


Acesso indireto memria de dados: Primeiro o endereo do registrador desejado movido para FSR. Em seguida, o acesso/modificao do contedo do registrador desejado realizado por meio de outro registrador: INDF.

UFSJ CAP Edgar C. Furtado

AULA-10

ACESSO INDIRETO MEMRIA DE DADOS


Exemplo: Assumindo-se que necessrio zerar o contedo do registrador TRISA. No estado inicial (aps energizao ou reset) tem-se que: IRP=0. Logo, inicialmente os bancos 0 e 1 esto selecionados.
; MICROPROCESSADORES Banco 0 ; -- ARQUIVO DE DEFINIES: #INCLUDE <P16F877.INC> __CONFIG _XT_OSC & _WDT_OFF & _PWRTE_OFF & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF ; -- VETOR DE RESET: ORG 0X00 GOTO INICIO ; -- INCIO INTERRUPO: ORG 0X04 RETFIE ; -- INCIO DO PROGRAMA: INICIO BCF STATUS, IRP Seleo dos bancos de memria 0 e 1. MOVLW MOVWF 0X85 FSR

Banco 1

Acessar um dos 256 registradores dos referidos bancos de memria. Zera o registrador apontado por FSR, que nesse caso o TRISA.

CLRF INDF ... ; -- FIM DO PROGRAMA: END UFSJ CAP Edgar C. Furtado

AULA-10

ACESSO INDIRETO MEMRIA DE DADOS


A implementao do acesso indireto memria base para possibilitar o uso do conceito de Ponteiros.

O uso de ponteiro crtico para uma programao bem-sucedida, em especial, na linguagem C, pois os ponteiros:

1. Fornecem os meios pelos quais as funes podem modificar seus argumentos; 2. So usados para suportar rotinas de alocao dinmica de memria em C; 3. Aumento de eficincia em algumas rotinas.

PONTEIRO: uma varivel que contm um endereo de memria, que representa a posio de uma outra varivel na memria.
UFSJ CAP Edgar C. Furtado

AULA-10

ACESSO INDIRETO MEMRIA DE DADOS


Tomando-se a linguagem C como exemplo, a relao entre o acesso indireto memria, na arquitetura do PIC, e os ponteiros :

& equivalente ao registrador FSR * equivalente ao registrador INDF

Endereo da varivel. Contedo da varivel.

Na arquitetura do microcontrolador PIC16F o ponteiro definido com apenas um registrador na memria.

Entretanto, em arquiteturas mais complexas pode-se um ponteiro pode ser definido em qualquer registrador na memria. Alm disso, o ponteiro pode assumir diferentes tipos de variveis, tais como, inteiro, ponto flutuante, entre outras.
UFSJ CAP Edgar C. Furtado

AULA-10

ACESSO INDIRETO MEMRIA DE DADOS


Exemplo: Considere o seguinte trecho de cdigo em C, e uma possvel verso em Assembly.
; -- DECLARAO DE VRIVEIS: X EQU D32 ; Endereo da Varivel X Y EQU D33 ; Endereo da Varivel Y ; -- INCIO DO PROGRAMA: PRINCIPAL MOVLW X ; W D32 MOVWF FSR ; FSR W MOVF MOVWF ... ; -- FIM DO PROGRAMA: END INDF,W Y ; W ; Y INDF W

void main(void) { int int x, y; *p;

p = &x; y = *p; }

A varivel p foi declarada como um ponteiro inteiro, que recebe o endereo da varivel x. A varivel y recebe o contedo do endereo apontado por p.
UFSJ CAP Edgar C. Furtado

AULA-10

PERIFRICOS
Os microcontroladores so teis por possurem uma srie de interfaces de entrada e sada de dados. O PIC16F877 possui as seguintes:
Perifricos Nmero de terminais de I/O Mdulos de captura, comparao e PWM Comparadores analgicos Temporizadores Comunicao Serial Comunicao Paralela Conversores AD 16F628A 16 1 2 2 de 8bits e 1 de 16bits 1 16F877 33 2 2 2 de 8bits e 1 de 16bits 1 1 1

UFSJ CAP Edgar C. Furtado

AULA-10

PERIFRICOS: MDULO CCP


O mdulo CCP possui trs funes distintas: Captura, Comparao e Gerao de sinal PWM. Funo Captura: utilizada quando se deseja registrar o tempo que um dado evento ocorreu. Essa funo est associada ao temporizador TIMER1 de 16 bits. Funo de Comparao: utilizada quando se deseja somar a quantidade de ocorrncias de um evento externo, se essa quantidade for igual a outra prdeterminada no cdigo, uma ao pode ser realizada. Nesse caso, o temporizador TIMER1 usado como contador de eventos. Gerao de um sinal PWM: Os sinais com largura de pulso modulada, PWM (Pulse Width Modulation), so utilizados em diversos contextos em engenharia. Essa funo est associada ao temporizador TIMER2.

UFSJ CAP Edgar C. Furtado

AULA-10

10

MDULO CCP: SINAL PWM


Considere o sinal PWM (Pulse Width Modulation) Pulso de largura modulada, a seguir:

DUTY CYCLE 5

TEMPO (S) PERODO

PERODO: Tempo para o sinal PWM se repetir. DUTY CYCLE: Perodo em que a largura de pulso permanece em nvel lgico 1 (5V); RESOLUO: O menor incremento que pode ocorrer no duty cycle.

UFSJ CAP Edgar C. Furtado

AULA-10

11

APLICAES PARA UM SINAL PWM


Os sinais PWM podem ser utilizados em diversos contextos em engenharia, dentre os quais pode-se citar: Controle de velocidade e/ou direo de um motor de corrente contnua;

Controle de temperatura;

Transmisso de um sinal codificado.

UFSJ CAP Edgar C. Furtado

AULA-10

12

MDULO CCP: GERAO DE SINAL PWM


Exemplo: Assumindo que o sinal de tenso PWM x(t) a seguir aplicado a uma lmpada incandescente, com resistncia de 10 . Determine a potncia mdia dissipada pela lmpada.
x(t)

0,2T 0,4T 0,6T 0,8T

1,2T 1,4T 1,6T 1,8T

2T

Tempo

Valor Mdio:

1 x = x(t )dt T 0
AULA-10 13

UFSJ CAP Edgar C. Furtado

MDULO CCP: GERAO DE SINAL PWM


Clculo do Perodo do sinal PWM:

TPWM = 4(PR 2 + 1)(TOSC )(PTMR2 )


em que: PR2 Fator de escala, valor do registrador PR2; TOSC Perodo do clock do sistema; PTMR2 Fator de pr-escala do temporizador TMR2: 1, 4 e 16;

Quando o perdo TMR2 igual ao PR2, os seguintes eventos ocorrem: O temporizador TMR2 zerado; O terminal CCP1 se torna nvel lgico 1, exceo se duty cycle=0%;

UFSJ CAP Edgar C. Furtado

AULA-10

14

GERAO DE SINAL PWM


Exemplo: Clculo do perodo do sinal PWM. Considere o MCR operando a 4MHz, com PR2 ajustado para 255d e com fator de escala de 4 aplicado ao TMR2. O valor para o perodo do sinal PWM nesse caso :

TPWM

= 4(PR 2 + 1)(TOSC )(PTMR2 ) = 4(255 + 1)(250n )(4) = 1,024ms

Por outro lado, a freqncia do sinal PWM ser = 976,5625Hz

UFSJ CAP Edgar C. Furtado

AULA-10

15

GERAO DE SINAL PWM


Clculo da resoluo do sinal PWM A resoluo do sinal PWM representa um nmero binrio que ser equivalente largura do pulso de nvel lgico 1, dentro do perodo. A resoluo RPWM formada por: CCP1RL
Bit 7 Bit 0

CCP1CON
Bit 5 Bit 4

Duty Cycle a:

0000 0000 00 1111 1111 11

0% TPWM 100% TPWM

Assumindo-se resoluo mxima possvel de 10bits.


UFSJ CAP Edgar C. Furtado

AULA-10

16

GERAO DE SINAL PWM


Teste para avaliar a possibilidade do uso da quantidade de bits para resoluo. Existe um valor mximo para a resoluo do sinal PWM, que dada por:

RPWM(mximo)

FOSC log (F )(P PWM TMR2 ) bits = log(2)

em que: RPWM(mximo): Maior valor da resoluo: [CCP1RL e CCP1CON(5:4)]; FOSC : Frequncia do clock do sistema; FPWM : Frequncia do sinal PWM; PTMR2 : Fator de pr-escala do temporizador TMR2: 1, 4 e 16;

UFSJ CAP Edgar C. Furtado

AULA-10

17

GERAO DE SINAL PWM


Exemplo: Clculo da Resoluo mxima para o sinal PWM. Considere o MCR operando a 4MHz, com PR2 ajustado para 255d e com fator de escala de 4 aplicado ao TMR2. Nessas condies o perodo do PWM TPWM=1,024ms.

RPWM(mximo)

FOSC log (F )(P PWM TMR2 ) = log(2) 4M log (976,5625)(4) = log(2) = 10bits
AULA-10

UFSJ CAP Edgar C. Furtado

18

GERAO DE SINAL PWM


Clculo do Duty Cycle (DCPWM):

DCPWM = (RPWM )(TOSC )(PTMR2 )


em que: RPWM : Valor da resoluo: [CCP1RL e CCP1RCON(5:4)]; TOSC : Perodo do clock do sistema; PTMR2: Fator de pr-escala do temporizador TMR2: 1, 4 e 16; O valor da resoluo RPWM est relacionado ao contedo mximo do registrador PR2, haja visto a multiplicao realizada 4(PR2+1) = 1024d = 10bits Se o duty cycle for maior que o perodo do sinal PWM, ento o terminal 9 (RB3|CCP1) permanecer em nvel lgico 1;

UFSJ CAP Edgar C. Furtado

AULA-10

19

GERAO DE SINAL PWM


Exemplo: Clculo do duty cycle do sinal PWM. Considere o MCR operando a 4MHz, com PR2 ajustado para 255d e com fator de escala de 4 aplicado ao TMR2. Assuma trs valores para o duty cycle, escritos nos registradores CCP1RL e CCP1CON:

1.

[CCP1RL = 0000 0000b e CCP1CON(5:4) = 00b]

0d

DCPWM

= = 0ms

(RPWM )(TOSC )(PTMR2 ) (0)(250n )(4)

UFSJ CAP Edgar C. Furtado

AULA-10

20

GERAO DE SINAL PWM


2. [CCP1RL = 1000 0000b e CCP1CON(5:4) = 00b] 512d

DCPWM

= = 0,512ms
3.

(RPWM )(TOSC )(PTMR2 ) (512)(250n )(4)

[CCP1RL = 1111 1111b e CCP1CON(5:4) = 11b]

1024d

DCPWM

= = 1,024ms

(RPWM )(TOSC )(PTMR2 ) (1024)(250n )(4)

UFSJ CAP Edgar C. Furtado

AULA-10

21

GERAO DE SINAL PWM


Clculo do duty cycle em termos de percentagem do TPWM possvel relacionar a percentagem do duty cycle com a resoluo, assumindo-se que o valor em PR2 fixo, ou seja,

RPWM DCPWM (%) = 4( PR 2 + 1) x 100

Exemplo: Para PR2=255d e RPWM=1100 0000 00b =768d, tem-se

RPWM 768 x 100 = DCPWM (%) = x100 = 75% 4( PR 2 + 1) 4(255 + 1)


UFSJ CAP Edgar C. Furtado

AULA-10

22

GERAO DE SINAL PWM


Procedimento para gerao do sinal PWM no microcontrolador 16F. Parmetro de projeto: TPWM 1o Passo Determinar valor das variveis PTMR2, PR2 e TOSC, de forma a se obter um TPWM , mais prximo do TPWM ; 2o Passo Verificar a mxima resoluo do sinal PWM. Essa etapa importante, pois a partir da mesma possvel definir o valor mximo para o contedo dos registradores [CCP1RL+CCP1CON(5:4)];

3o Passo Implementar cdigo. Nesse ponto o programador deve estar atento ao valor mximo obtido no 2o passo, uma vez que, caso o duty cycle seja maior que o TPWM, o terminal CCP1 permanecer em nvel lgico 1.

UFSJ CAP Edgar C. Furtado

AULA-10

23

MDULO CCP: COMPARADOR


No modo de comparao o contedo dos registradores [CCPR1H CCPR1L] constantemente comparado ao contedo do temporizador TMR1 [TMR1H TMR1L]. Se o valor for igual, tem-se que o terminal CCP1 assume uma das condies: Nvel lgico 1; Nvel lgico 0; Permanece inalterado. A escolha da condio realizada por meio dos bits CCP1M(3-0) do registrador CCP1CON. A configurao desses bits com a respectiva condio final do terminal CCP1 : 1000 1001 1010 1011 = = = = CCP1 CCP1 CCP1 CCP1 vai a nvel lgico 1, se igual. vai a nvel lgico 0, se igual. permanece inalterado, mas gera-se interrupo se igual. permanece inalterado, mas zera-se contador TMR1 se igual.
AULA-10 24

UFSJ CAP Edgar C. Furtado

MDULO CCP: COMPARADOR

Para funcionamento do comparador, o temporizador TMR1 pode ser ajustado para clock interno, como um contador de evento externo. possvel utilizar o Mdulo CCP como comparador para as seguinte situaes:

Se o nmero de pulsos, na entrada de pulsos de clock (T1CKI), for igual a [CCP1RH CCP1RL], ento o terminal CCP1 vai para o estado (nvel lgico 1 ou 0), conforme configurao;

Se valor de [CCP1RH CCP1RL]

for igual a TMR1, ento o terminal

CCP1 vai para o estado (nvel lgico 1 ou 0), conforme configurao;

UFSJ CAP Edgar C. Furtado

AULA-10

25

MDULO CCP: CAPTURA


No modo de captura o contedo do temporizador TMR1 [TMR1H TMR1L] capturado e copiado nos registradores [CCPR1H CCPR1L], quando um evento no terminal CCP1 acontece:

A escolha do evento associado ao terminal 9 realizada por meio dos bits CCP1M(3-0) do registrador CCP1CON, ou seja,

0100 = Habilita modo de captura, a cada borda de descida. 0101 = Habilita modo de captura, a cada borda de subida. 0110 = Habilita modo de captura, a cada 4 bordas de subida. 0111 = Habilita modo de captura, a cada 16 bordas de subida.

UFSJ CAP Edgar C. Furtado

AULA-10

26

HABILITA COMPARADOR/CAPTURA
Procedimento para implementao no MCR do modo de comparao: 1o Passo: Configurar terminal CCP1 para sada de sinal; 2o Passo: Configurar registrador especial CCP1CON para operar em modo comparao, selecionar evento para terminal CCP1; 3o Passo: Habilitar e configurar TMR1, no registrador T1CON;

Procedimento para implementao no MCR do modo de captura: 1o Passo: Configurar terminal CCP1 para entrada de sinal; 2o Passo: Configurar registrador especial CCP1CON para operar em modo comparao, selecionar evento para terminal CCP1; 3o Passo: Habilitar e configurar TMR1, no registrador T1CON;

UFSJ CAP Edgar C. Furtado

AULA-10

27

PERIFRICOS: MDULO CCP


Terminais do microcontrolador PIC16F877 associados aos mdulos CCP:

Entrada de clock TIMER 1: Terminais Sada CCP:

UFSJ CAP Edgar C. Furtado

AULA-10

28