Microcontrolador PIC_Aula1.pdf

158
19/2/2008  1 Microcontrolador PIC Alexandre Cunha Oliveira Petrolina Abril de 2007

Transcript of Microcontrolador PIC_Aula1.pdf

  • 19/2/2008 1

    Microcontrolador PIC

    Alexandre Cunha OliveiraPetrolina Abril de 2007

  • 19/2/2008 2

    Microcontrolador PIC

    X

    Microcontrolador x Microprocessador

  • 19/2/2008 3

    Microcontrolador PIC

    Microcontrolador PIC Descrio GeralUtiliza arquitetura Harvard (RISC);Permite interrupes de origem interna e externa;O pipeline permite execues de instrues em um ciclo, exceto os desvios;

    Possui 35 instrues;Possui blocos perifricos internos.

  • 19/2/2008 4

    Microcontrolador PIC

    Arquiteturas

    Os microcontroladores com arquitetura Havard so chamados de RISC (Reduced Instruction Set Computer) Os microcontroladores com a arquitetura de Von Neumann so tambm chamados CISC (Complex Instruction Set Computer)

  • 19/2/2008 5

    Microcontrolador PIC

    Arquitetura Havard Capacidade de processamento maior, sem necessidade de elevar a freqncia de clock da CPU.

    Separao das memrias de dados e programa: Possibilidade de representar instrues por palavras de mais que 8 bits (Ex 14bits PIC)

    Busca e execuo simultnea de instrues.

  • 19/2/2008 6

    Microcontrolador PIC

    Diagrama de Blocos

  • 19/2/2008 7

    Microcontrolador PIC

    Unidade Central de ProcessamentoRealiza a extrao das instrues, decodificao e

    execuo.

  • 19/2/2008 8

    Microcontrolador PIC

    Unidade Lgica AritmticaExecuta as operaes de adio, subtrao, desloca-

    mento e operaes lgicas. O PIC 16F877 possui uma ULA de 8bits.

  • 19/2/2008 9

    Microcontrolador PIC

    Registrador de Status (Estado)

    bit 0 C (Carry) Transporte

    bit 1 DC (Digit Carry) Transporte de dgito

    bit 2 Z (bit Zero) Indicao de resultado igual a zero

    bit 3 PD (Bit de baixa de tenso Power Down)

  • 19/2/2008 10

    Microcontrolador PIC

    Registrador de Status (Estado)bit 4 TO Time-out (transbordo do Watchdog)

    bits 5 e 6 RP1:RP0 (bits de seleo de banco de registros da RAM) Endereamento direto.

    11 = banco de registros 310 = banco de registros 201 = banco de registros 100 = banco de registros 0

    bit 7 IRP (Bit de seleo de banco de registros) -Endereamento indireto.

    1 = bancos 2 e 3 (endereos de 100h a 1FFh)0 = bancos 0 e 1 (endereos de 00h a FFh)

  • 19/2/2008 11

    Microcontrolador PIC

    Registrador Option

    bits 0 a 2 PS0, PS1, PS2 (bits de seleo do divisor Prescaler) - Estes trs bits definem o fator de diviso do prescaler.

  • 19/2/2008 12

    Microcontrolador PIC

    Registrador Option

    bit 3 PSA (Bit de Atribuio do Prescaler) Atribuio do prescaler.1 = prescaler atribudo ao watchdog;0 = prescaler atribudo ao temporizador TMR0.

  • 19/2/2008 13

    Microcontrolador PIC

    Registrador Option

  • 19/2/2008 14

    Microcontrolador PIC

    Registrador Optionbit 4 T0SE (bit de seleo de borda ativa em TMR0) Sinal atravs do pino RA4/TOCK1.1 = borda de descida;0 = borda de subida.

    bit 5 TOCS (bit de seleo da fonte de clock em TMR0)1 = sinais externos (RA4/TOCKI);0 = do clock interno.

  • 19/2/2008 15

    Microcontrolador PIC

    Registrador Optionbit 6 INDEDG (bit de seleo da borda de interrupo) Interrupo atravs do pino RB0/INT.1 = borda de subida;0 = borda de descida.

    bit 7 RBPU (Habilitao dos pull-up nos bits da porta B)1 = resistncias de pull-up desligadas;0 = resistncias de pull-up ligadas.

  • 19/2/2008 16

    Microcontrolador PIC

    Portas A, B, C, D e E

    Bit do registrador TRISx = 1 pino da porta x ser uma entrada;Bit do registrador TRISx = 0 pino da porta x ser uma sada;onde x =A, B, C, D, E, para o PIC 16F877.

  • 19/2/2008 17

    Microcontrolador PIC

    Configurao da Porta A

    Pinos 0, 1, 2, 3 e 4 da porta A so declarados como entradas.

    Resumo dos registradores associados a porta A

  • 19/2/2008 18

    Microcontrolador PIC

    Timer

  • 19/2/2008 19

    Microcontrolador PIC

    Timer 0Contador/Timer de 8 bits;Registrador de contagem de escrita e leitura;Pr-escalonador (divisor de freqncia) programvel;Utiliza sinal de clock interno ou externo;Gera interrupo quando a contagem muda de FF para 00;Permite selecionar o tipo de transio quando usa clock externo (Borda de subida ou descida).

  • 19/2/2008 20

    Microcontrolador PIC

    Timer 0# Modos de contagemModo timer - Incrementa a cada ciclo de instruo (sem pr-escalonador). Modo de contagem - Incrementar a cada subida ou descida do sinal no pino RA4/TOCKL (borda definida pelo bit T0SE - bit 4 do Reg. OPTION).

    Registradores associados:

  • 19/2/2008 21

    Microcontrolador PIC

    Diagrama de Blocos Timer 0

  • 19/2/2008 22

    Microcontrolador PIC

    Timer 1 Contador/Timer 16 bits (dois registradores de 8

    bits (TMR1H e TMR1L); O par de registradores (TMR1H e TMR1L)

    incrementa de 0000h a FFFFh e retorna a 0000h (overflow).

    # Modos de Operao: Como timer: Timer 1 incrementa a cada ciclo de

    instruo; Como contador: Timer 1 incrementa a cada

    transio do sinal de clock externo.

  • 19/2/2008 23

    Microcontrolador PIC

    Timer 1O modo de operao determinado pelo bit de seleo de clock, TMR1CS (bit 1 do Reg. T1CON).

    Bit 0 (bit TMR1ON bit de ativao do Timer 1)1 = Timer 1 ativado0 = Timer 1 desativado;

  • 19/2/2008 24

    Microcontrolador PIC

    Timer 1Bit 1 (bit TMR1CS bit que seleciona a fonte de clock do Timer 1)1 = Sinal de clock externo (pino RC0/T1OSO/T1CKI (contagem ocorre na borda de subida do sinal) 0 = Sinal interno de clock (Fosc/4).

    Bit 2 (bit T1SYNC bit de sincronizao do clock externo)TMR1CS =1

    1 = No sincroniza sinal de clock externo 0 = Sincroniza sinal de clock externo.

    TMR1CS =0No tem efeito

  • 19/2/2008 25

    Microcontrolador PIC

    Timer 1Bit 3 (bit T1OSCEN bit de habilitao do oscilador interno do Timer 1) configura-se o PIC para operar com oscilador interno. O mesmo gera um sinal com uma freqncia de 200KHz (a 4MHz a depender do PIC). 1 = oscilador habilitado0 = oscilador desligado (elimina consumo de energia)

    Bits 5-4 (bits de seleo do pr-escalonador do sinal da entrada de clock)

    11 = Escalonamento de 1:810 = Escalonamento de 1:401 = Escalonamento de 1:200 = Escalonamento de 1:1

  • 19/2/2008 26

    Microcontrolador PIC

    Timer 1Bits 7-6 (bits no usados lidos como 0)

  • 19/2/2008 27

    Microcontrolador PIC

    Timer 1Registradores associados ao Timer 1 (modos Timer/Contador)

  • 19/2/2008 28

    Microcontrolador PIC

    Timer 2Timer de 8 bits com um pr-escalonador e ps-escalonador. Pode ser usado como a base de tempo no modo PWM dos mdulos CCP. TMR2 um registra-dor de escrita e leitura e apagado em qual-quer evento de reset.

  • 19/2/2008 29

    Microcontrolador PIC

    Timer 2

    Bits 1-0 (bit T2CKPS1 e T2CKPS0 bit de seleo do pr-escalonador) 00 = Escalonamento de 101 = Escalonamento de 41x = Escalonamento de 16

    Registrador de Controle do Timer 2 T2CON (endereo 12h)

  • 19/2/2008 30

    Microcontrolador PIC

    Timer 2Bit 2 (bit TMR2ON bit de ativao do Timer 2).1 = Timer 2 ativado0 = Timer 2 desativado;

    Bits 6-3 (bits TOUTPS3:TOUTPS0 bits de seleo do ps-escalonador)

    0000 = Escalonamento de 10001 = Escalonamento de 20010 = Escalonamento de 3

    1110 = Escalonamento de 151111 = Escalonamento de 16

  • 19/2/2008 31

    Microcontrolador PIC

    Timer 2Bit 7 (bit no usado lido como 0)

    Registradores associados com o Timer 2 (modos Timer/Contador)

  • 19/2/2008 32

    Microcontrolador PIC

    Captura/Comparao/PWMOs mdulos CCP (Captura/Comparao/PWM) so formados por um registrador de 16 bits que pode operar como:Registrador de captura de 16 bits;Registrador de comparao de 16 bitsRegistrador de duty-cycle no modo PWM Mestre/Escravo.

  • 19/2/2008 33

    Microcontrolador PIC

    Captura/Comparao/PWMMdulo CCP1O registrador CCP do mdulo CCP1 (CCPR1) formado por dois registradores de 8 bits: CCPR1L e CCPR1H.O registrador CCP1CON controla a operao do CCP1.Special Event Trigger gerado quando no modo comparao ocorre a igualdade entre o CCPR1 e o registrador de comparao.

    No Special Event Trigger o contedo do Timer 1 resetado.

  • 19/2/2008 34

    Microcontrolador PIC

    Captura/Comparao/PWMMdulo CCP2O registrador CCP do mdulo CCP2 (CCPR2) formado por dois registradores de 8 bits: CCPR2L e CCPR2H. O registrador CCP2CON controla a operao do CCP2. O special event trigger gerado no modo comparao quando o contedo do registrador de contagem do Timer 1 iguala ao contedo do registrador de comparao.

    Special Event Trigger reseta o Timer 1 e pode iniciar uma converso A/D.

  • 19/2/2008 35

    Microcontrolador PIC

    Captura/Comparao/PWMModo de operao do mdulo CCP e recursos de Timer necessrios

    Interao entre os mdulos CCP

  • 19/2/2008 36

    Microcontrolador PIC

    Captura/Comparao/PWMRegistradores 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.0000 = Modos Captura/Comparao/PWM desligados (reseta mdulo CCPx )

  • 19/2/2008 37

    Microcontrolador PIC

    Captura/Comparao/PWM0100 = Modo captura, a cada 1 transio negativa (10);0101 = Modo captura, a cada 1 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);

  • 19/2/2008 38

    Microcontrolador PIC

    Captura/Comparao/PWM1011 = Modo comparao, ativa Special Event trigger(bit CCPxIF seta, pino CCPx no afetado); CCP1 reseta TMR1; CCP2 reseta 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 usadoModo Comparao: No usadoModo PWM: Dois bits LSB do duty-cycle do sinal PWM. Os oito MSBs so gravados no registrador CCPRxL.

  • 19/2/2008 39

    Microcontrolador PIC

    Captura/Comparao/PWMModo CapturaO valor de 16 bits do registrador TMR1 copiado para os registradores CCPR, quando um dos eventos ocorre no pino RC2/CCP1 e/ou RC1/CCP2 (PIC16F877) :A cada borda de descida do sinal no pino RC2, RC1 (PIC 16F877);A cada borda de subida do sinal no pino RC2, RC1 (PIC 16F877);A cada 4 bordas de subida do sinal no pino RC2, RC1 (PIC 16F877);A cada 16 bordas de subida do sinal no pino RC2, RC1 (PIC 16F877);

  • 19/2/2008 40

    Microcontrolador PIC

    Captura/Comparao/PWMModo CapturaQuando ocorre o evento de captura, o flag CCP1IF (bit 2 do Reg. PIR1) setado;Se uma outra captura ocorrer antes que o valor no registrador CCPR1 for lido, o valor anterior ser perdido;No modo captura os pinos RC2/CCP1, RC1/CCP2 devem ser configurados como uma entrada, setando o bit 1 e 2 do registrador TRISC;O Timer 1 deve estar operando no modo timer ou no modo contador com sincronizao do sinal de clock externo com o clock interno.

  • 19/2/2008 41

    Microcontrolador PIC

    Captura/Comparao/PWMModo Captura Diagrama de Blocos

  • 19/2/2008 42

    Microcontrolador PIC

    Captura/Comparao/PWMModo ComparaoO valor do registrador CCPR1 (16 bits) e/ou CCPR2 (16 bits) (so) constantemente comparado(s) com o valor do registrador TMR1.

    Quando os valores se igualam, o pino RC2/CCP1 e/ou RC1/CCP2 (so):Ativado(s);Desativado(s);Permanece(m) inalterado(s).

    Simultaneamente o flag CCP1IF setado, gerando uma interrupo, se habilitada.

  • 19/2/2008 43

    Microcontrolador PIC

    Captura/Comparao/PWMModo ComparaoNo modo comparao os pinos RC2/CCP1, RC1/CCP2 e RB3/CCP1 devem ser configurados como sadas.

    No modo de comparao pode ser gerado um Special Event Trigger. No mdulo CCP1, reseta o par de registradores que forma o TMR1;No mdulo CCP2 reseta o par de registradores que forma o TMR1 e pode iniciar uma converso A/D (se o mdulo A/D est habilitado).

  • 19/2/2008 44

    Microcontrolador PIC

    Captura/Comparao/PWMModo Comparao

  • 19/2/2008 45

    Microcontrolador PIC

    Captura/Comparao/PWMRegistradores associados com o Capture, Compare e Timer 1

  • 19/2/2008 46

    Microcontrolador PIC

    Captura/Comparao/PWMModo PWMO bloco CCPx produz um sinal PWM com uma resoluo de at 10 bits.

    Um sinal PWM caracterizado pelo seu perodo e o duty-cycle, que corresponde ao tempo em que o sinal permanece em nvel alto.

    O perodo do sinal PWM especificado pelo registrador PR2: Perodo PWM = [(PR2) + 1] 4 TOSC (TMR2 prescale value).

  • 19/2/2008 47

    Microcontrolador PIC

    Captura/Comparao/PWMModo PWMQuando TMR2 igual a PR2, os seguintes eventos ocorrem:O TMR2 apagado;O pino CCP1 setado (exceto se o duty-cycle do PWM = 0%, quando o CCP1 no ser setado);O PWM duty-cycle copiado de CCPR1L para CCPR1H.

    O duty-cycle do PWM definido escrevendo para o registrador CCPR1L (bits mais significativos) e para os bits 5 e 4 do registrador CCP1CON.

  • 19/2/2008 48

    Microcontrolador PIC

    Captura/Comparao/PWMModo PWMDeterminao do duty-cycle em termos de tempo:Duty Cycle do PWM = (CCPR1L:CCP1CON) Tosc (TMR2 prescale value)

    O novo valor de duty-cycle s atualizado no CCPR1H, quando os valores dos registradores PR2 e TMR2 coincidirem (ao fim do perodo PWM).

    No modo PWM CCPR1H um registrador apenas de leitura.

  • 19/2/2008 49

    Microcontrolador PIC

    Captura/Comparao/PWMModo PWMPasso 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 o pino RC2/CCP1, RC1/CCP2 como uma sada;Ajustar o valor do pr-escalonador e habilitar o Timer 2 configurando o registrador T2CON;Configurar o mdulo CCP1 e/ou CCP2 para operao no modo PWM;

  • 19/2/2008 50

    Microcontrolador PIC

    Captura/Comparao/PWMModo PWM

  • 19/2/2008 51

    Microcontrolador PIC

    Captura/Comparao/PWMRegistradores associados com o PWM e Timer 2

  • 19/2/2008 52

    Microcontrolador PIC

    CONVERSOR A/DO mdulo do conversor A/D possui 8 entradas analgicas;Um sample-and-hold conectada a entrada do conversor A/D a partir de um multiplex 8 x 1; O conversor A/D gera uma palavra binria de 10 bits; O mdulo A/D tem duas entradas de tenso de referncia (alta e baixa), selecionadas por software;O mdulo conversor A/D pode operar com o PIC estando no modo SLEEP (utiliza oscilador RC interno.

  • 19/2/2008 53

    Microcontrolador PIC

    CONVERSOR A/DO conversor A/D possui quatro registradores:Registrador do byte mais significado do resultado da converso (ADRESH);Registrador do byte menos significado do resultado da converso (ADRESL);Registrador de controle 0 (ADCON0);Registrador de controle 1. (ADCON1).Quando a converso concluda, o resultado carregado em ADRES, o bit GO/DONE (bit 2 do Reg. ADCON0) resetado e o flag de interrupo, bit ADIF, setado.

  • 19/2/2008 54

    Microcontrolador PIC

    CONVERSOR A/DOs canais de entrada analgicos devem ter seus

    correspondentes bits TRIS ajustados para que os pinos das portas A e E se comportem como entradas.

    Aps o perodo de aquisio a converso A/D pode ser iniciada conforme os seguintes passos:

    Configure o mdulo A/D;9 Configure os pinos de entrada analgica, as

    tenses de referncia e os pinos de I/O digital (ADCON1);

    9 Selecione o canal de entrada analgica (ADCON0);9 Selecione a freqncia do sinal de clock do

    conversor A/D (ADCON0);9 Ative o mdulo A/D;

  • 19/2/2008 55

    Microcontrolador PIC

    CONVERSOR A/D Configure a interrupo do mdulo A/D (se desejado);9 Reset o bit ADIF;9 Sete o bit ADIE;9 Sete o bit GIE;

    Aguarde o tempo de aquisio requerido; Inicie a converso;9 Sete o bit GO/DONE (ADCON0);

    Aguarde o tempo de converso ter transcorrido;9 Realize um POLLING no bit GO/DONE, verificando se

    o seu valor zero (indicativo de fim de converso A/D);

    9 ou aguarde pela interrupo gerada pelo mdulo A/D ao fim da converso;

  • 19/2/2008 56

    Microcontrolador PIC

    CONVERSOR A/D Leia o par de registradores (ADRESH:ADRESL),

    resete o bit ADIF se a interrupo do conversor A/D est sendo utilizada;

    Para realizar uma nova converso retorne ao passo 1 ou 2 (antes de uma nova converso ser iniciada, deve ser aguardado um tempo de 2TAD, que o tempo de converso por bit, cujo valor definido na tabela 1).

  • 19/2/2008 57

    Microcontrolador PIC

    CONVERSOR A/DO conversor A/D necessita de no mnimo 12 TAD para

    realizar uma converso de 10 bits. A fonte do clock do conversor A/D selecionada por software entre as possibilidades abaixo: 2Tosc; 8Tosc; 32Tosc; Oscilador RC interno.

    Para uma converso correta, o clock do conversor A/D deve ser selecionado para garantir um TAD mnimo de 1.6s.

  • 19/2/2008 58

    Microcontrolador PIC

    CONVERSOR A/DTAD x Mxima freqncia de converso

  • 19/2/2008 59

    Microcontrolador PIC

    CONVERSOR A/DO par de registradores ADRESH:ADRESL comporta 16

    bits, assim, o valor convertido de 10 bits pode ser justificado a direita ou esquerda (bit ADFM).

    Os bits extras no utilizados so carregados com 0(zeros).

    Quando o mdulo A/D no estiver sendo utilizado, os registradores ADRESH:ADRESL podem ser usados como dois registradores de propsito geral de 8 bits.

  • 19/2/2008 60

    Microcontrolador PIC

    CONVERSOR A/DJustificao do resultado da converso A/D

  • 19/2/2008 61

    Microcontrolador PIC

    CONVERSOR A/DDiagrama de

    blocos do conversor A/D

  • 19/2/2008 62

    Microcontrolador PIC

    CONVERSOR A/DRegistrador ADCON0 - Controla a operao do mdulo

    A/D (endereo 1Fh).

    Bit 0 (bit ADON bit que ativa o conversor A/D) Este bit ativa a operao do conversor A/D.

    1 = conversor A/D ativado0 = conversor A/D desligadoBit 1 (bit no usado lido como 0)

  • 19/2/2008 63

    Microcontrolador PIC

    CONVERSOR A/DBit 2 (bit GO/ bit de status de converso) Este bit

    indica se uma converso iniciada j foi concluda.Se ADON =11 = converso A/D em andamento0 = no h converso A/D em andamento (esse bit

    automaticamente resetado quando a converso A/D concluda).

    Bits 5-3 (bits CHS2:CHS0 bits de seleo de canal) Estes bits selecionam a entrada analgica cujo sinal ser convertido.

    000 = canal 0, (RA0/AN0)001 = canal 1, (RA1/AN1)010 = canal 2, (RA2/AN2)

  • 19/2/2008 64

    Microcontrolador PIC

    CONVERSOR A/D011 = canal 3, (RA3/AN3)100 = canal 4, (RA5/AN4)101 = canal 5, (RE0/AN5)110 = canal 6, (RE1/AN6)111 = canal 7, (RE2/AN7)

    Bits 7-6 (bits ADCS1:ADCS0 bits de seleo de clock) Estes bits selecionam a fonte do sinal de clock para o conversor A/D.

    00 = FOSC/201 = FOSC/810 = FOSC/3211 = FRC (clock derivado de um oscilador RC)

  • 19/2/2008 65

    Microcontrolador PIC

    CONVERSOR A/DRegistrador ADCON1 Configura a funo dos pinos das

    portas (A e E) (endereo 9Fh)

    Bits 3-0 (bits PCFG3:PCFG0 bits de controle de configurao ps portas A/D) Este bits configuram os pinos analgicos das Portas A e E.

  • 19/2/2008 66

    Microcontrolador PIC

    CONVERSOR A/D

  • 19/2/2008 67

    Microcontrolador PIC

    CONVERSOR A/DBits 6-4 (bits no usados lido como 0)

    Bit 7 (bit ADFM bit de seleo de formato do resultado da converso A/D) Este bit seleciona o formato de justificao do resultado gerado pelo conversor A/D.

    1 = Justificao direita. Os 6 bits mais significativos de ADRESH sero iguais a 0.

    0 = Justificao esquerda. Os 6 bits menos significativos de ADRESL sero iguais a 0.

  • 19/2/2008 68

    Microcontrolador PIC

    CONVERSOR A/DRegistradores associados com o mdulo do conversor

    A/D

  • 19/2/2008 69

    Microcontrolador PIC

    Comunicao SerialComunicao SerialA transmisso bit-serial converte a mensagem em um bit

    por vez atravs de um canal. Os bits individuais so ento rearranjados no destino

    para compor a mensagem original.

    Taxa de Transferncia (Baud Rate)Velocidade com que os dados so enviados atravs de

    um canal e medido em transies eltricas por segundo (Hz).

    Na norma EIA232, ocorre uma transio de sinal por bit, e a taxa de transferncia e a taxa de bit (bit rate) so idnticas.

  • 19/2/2008 70

    Microcontrolador PIC

    Comunicao SerialTransmisso Assncrona x Transmisso SncronaSistemas sncronos - Canais separados so usados para

    transmitir dados e informao de tempo. O canal de temporizao transmite pulsos de clock para

    o receptor, que indica o instante de leitura do canal de dados.

    Sincronizao garantida.

  • 19/2/2008 71

    Microcontrolador PIC

    Comunicao SerialTransmisso Assncrona x Transmisso SncronaEm sistemas assncronos, a informao trafega por um

    canal nico. Um oscilador preciso no receptor ir gerar um sinal de

    clock interno que igual (ou muito prximo) ao do transmissor.

    Para o protocolo serial mais comum, os dados so enviados em pequenos pacotes de 10 ou 11 bits, dos quais 8 constituem a mensagem.

    Quando o canal est em repouso, o sinal correspondente no canal tem um nvel lgico 1.

  • 19/2/2008 72

    Microcontrolador PIC

    Comunicao SerialTransmisso Assncrona x Transmisso SncronaUm pacote de dados sempre comea com um nvel

    lgico 0 (start bit) para sinalizar ao receptor que um transmisso foi iniciada.

    O start bit inicializa um temporizador interno no receptor avisando que a transmisso comeou e que sero necessrios pulsos de clocks.

    Seguido do start bit, 8 bits de dados de mensagem so enviados na taxa de transmisso especificada.

    O pacote concludo com os bits de paridade e de parada (stop bit).

  • 19/2/2008 73

    Microcontrolador PIC

    Comunicao SerialTransmisso Assncrona x Transmisso Sncrona

  • 19/2/2008 74

    Microcontrolador PIC

    Comunicao SerialChecksum e Paridade Rudos e distrbios eltricos momentneos podem

    causar mudanas nos dados quando esto trafegando pelos canais de comunicao.

    Se o receptor falhar ao detectar isso, a mensagem recebida ser incorreta.

    Se um erro pode ser sinalizado, pode ser possvel pedir que o pacote com erro seja reenviado, ou prevenir que os dados sejam considerados corretos.

    Se uma redundncia na informao for enviada, 1 ou 2 bits de erros podem ser corrigidos pelo hardware no receptor antes que o dado chegue ao seu destino.

  • 19/2/2008 75

    Microcontrolador PIC

    Comunicao SerialChecksum e Paridade O bit de paridade adicionado ao pacote de dados

    com o propsito de deteco de erro. Paridade-par (even-parity): Bit de paridade

    escolhido de modo que o nmero total de dgitos 1dos dados + bit de paridade seja um nmero par.

    Na recepo recalcula-se a paridade e a compara com o bit de paridade recebido. Se houve mudana de bit, a paridade no ir coincidir, e um erro ser detectado.

    Se um nmero par de bits for trocado, a paridade coincidir e o dado com erro ser validado.

  • 19/2/2008 76

    Microcontrolador PIC

    Comunicao SerialChecksum e Paridade Outro mtodo de deteco de erro envolve o clculo

    de um checksum quando mensagens com mais de um byte so transmitidas pelo canal de comunicao.

    Um nmero de checksum adicionado a seqncia do pacote de dados de tal forma que a soma dos dados mais o checksum zero.

    Na recepo os dados so adicionados pelo processador local. Se a soma do pacote der resultado diferente de zero, ocorreu um erro.

    Na ocorrncia de erros improvvel (mas no impossvel) que qualquer corrupo de dados resultem em checksum igual a zero.

  • 19/2/2008 77

    Microcontrolador PIC

    Comunicao SerialMdulo USART do PICO mdulo Transmissor Receptor Sncrono Assncrono

    Universal (USART) pode ser configurado como um sistema Full Duplex e opera segundo um padro de comunicao serial como o RS232

    O mesmo mdulo pode ser configurado como um sistema Half Duplex sncrono.

    O mdulo USART pode ser configurado nos seguintes modos:

    Assncrono (Full Duplex) Sncrono Master (Half Duplex) Sncrono Slave (Half Duplex)

  • 19/2/2008 78

    Microcontrolador PIC

    Comunicao SerialO mdulo formado pelos seguintes blocos: Gerador de Baud Rate; Circuito de Amostragem; Transmissor Assncrono; Receptor Assncrono.

    Transmissor Assncrono

  • 19/2/2008 79

    Microcontrolador PIC

    Comunicao SerialReceptor Assncrono

  • 19/2/2008 80

    Microcontrolador PIC

    Comunicao SerialRegistrador de Controle e Status da Transmisso

    (End. 98H)

    Bit 0 (bit TX9D nono bit do dado transmitido) Este bit pode representar um bit de paridade implementado por software.

  • 19/2/2008 81

    Microcontrolador PIC

    Comunicao SerialRegistrador de Controle e Status da Transmisso

    (End. 98H)Bit 1 (bit TRMT status do registrador de

    deslocamento do transmissor da USART) Este bit indica se o registrador de deslocamento do transmissor da USART est cheio ou vazio.

    1 = Registrador de deslocamento vazio0 = registrador de deslocamento cheio

    Bit 2 (bit BRGH seleo de alta taxa de transmisso (High Baud Rate)) Este bit seleciona uma taxa de transmisso (baud rate) alta.

    No modo Assncrono

  • 19/2/2008 82

    Microcontrolador PIC

    Comunicao SerialRegistrador de Controle e Status da Transmisso

    (End. 98H)1 = Alta taxa de transmisso0 = Baixa taxa de transmisso.No modo Sncrono

    No usadoBit 3 (bit no usado, lido como 0)

    Bit 4 (bit SYNC bit de seleo do modo de operao da USART) Este bit seleciona como a USART operar, no modo assncrono ou sncrono.

    1 = Modo sncrono0 = Modo assncrono.

  • 19/2/2008 83

    Microcontrolador PIC

    Comunicao SerialRegistrador de Controle e Status da Transmisso

    (End. 98H)Bit 5 (bit TXEN bit de habilitao de transmisso)

    Este bit habilita o mdulo de transmisso da USART.1 = Transmisso habilitada0 = Transmisso desabilitada.Nota: SREN/CREN tem prioridade sobre o bit TXEN

    no modo sncrono

    Bit 6 (bit TX9 bit de habilitao da transmisso do nono bit) Este bit habilita a transmisso do nono bit de dados.

    1 = Seleciona transmisso de 9 bits0 = Seleciona transmisso de 8 bits.

  • 19/2/2008 84

    Microcontrolador PIC

    Comunicao SerialRegistrador de Controle e Status da Transmisso

    (End. 98H)Bit 7 (bit CSRC bit de seleo da fonte de clock

    para a USART) Este bit seleciona a fonte do sinal de clock quando a USART opera no modo sncrono.

    Modo assncronoNo usado

    Modo Sncrono1 = Modo Mestre (clock gerado internamente pelo RG)0 = Modo escravo (clock externo).

  • 19/2/2008 85

    Microcontrolador PIC

    Comunicao SerialRegistrador de Controle e Status da Recepo (End.

    18H)

    Bit 0 (bit RX9D nono bit do dado recebido) Este bit pode representar um bit de paridade implementado por software.

  • 19/2/2008 86

    Microcontrolador PIC

    Comunicao SerialRegistrador de Controle e Status da Recepo (End.

    18H)Bit 1 (bit OERR bit de erro de overrun) Setado

    quando um segundo byte gravado no registrador de recepo, antes do byte anterior ter sido lido.

    1 = Erro de overrun (este bit pode ser apagado resetando o bit CREN)

    0 = No houve erro de overrun.Bit 2 (bit FERR bit de erro de frame) Este bit

    setado quando detectado um erro de frame.1 = Erro de frame (pode ser atualizado lendo o

    registrador RCREG e recepo do prximo byte vlido

    0 = No houve erro de frame.

  • 19/2/2008 87

    Microcontrolador PIC

    Comunicao SerialRegistrador de Controle e Status da Recepo (End.

    18H)Bit 3 (bit ADDEN bit que habilita a deteco de

    endereo) Este bit permite utilizar o nono bit da palavra de dados para identificao de palavras de endereo (RX9 1).

    Modo assncrono, bit 9 habilitado 1 = Habilita deteco de endereo, habilita interrupo e

    faz leitura do buffer de recepo quando RSR setado

    0 = Desabilita a deteco de endereo. Todos os bytes so recebidos e o nono bit pode ser usado como bit de paridade.

  • 19/2/2008 88

    Microcontrolador PIC

    Comunicao SerialRegistrador de Controle e Status da Recepo (End.

    18H)Bit 4 (bit CREN bit que habilita a recepo no

    modo contnuo) Este bit habilita a USART a receber de forma contnua dados seriais.

    Modo Assncrono1 = habilita recepo contnua0 = Desabilita recepo contnua.Modo Sncrono1 = habilita recepo contnua at o bit CREN ser

    resetado (CREN tem prioridade sobre SREN)0 = Desabilita recepo contnua.

  • 19/2/2008 89

    Microcontrolador PIC

    Comunicao SerialRegistrador de Controle e Status da Recepo (End.

    18H)Bit 5 (bit SREN bit de habilitao de recepo byte-

    a-byte) Este bit habilita o mdulo de recepo da USART a receber dados byte a byte.

    Modo AssncronoNo usado nesse modo

    Modo Sncrono (Mestre)1 = habilita recepo byte-a-byte0 = Desabilita recepo byte-a-byte.Nota: Esse bit resetado aps a recepo do byteModo Sncrono (Escravo)

    No usado nesse modo

  • 19/2/2008 90

    Microcontrolador PIC

    Comunicao SerialRegistrador de Controle e Status da Recepo (End.

    18H)Bit 6 (bit RX9 bit de habilitao da recepo do

    nono bit) Este bit habilita a recepo do nono bit de dados.

    1 = Seleciona recepo de 9 bits0 = Seleciona recepo de 8 bits.Bit 7 (bit SPEN bit de habilitao da porta serial)

    Este bit ativa ou desliga o bloco de comunicao serial.

    1 = Porta serial habilitada (configura os pinos RC7/RX/DT e RC6/TX/CK como pinos da porta serial)

    0 = Porta serial desabilitada.

  • 19/2/2008 91

    Microcontrolador PIC

    Comunicao SerialRegistradores associados com a transmisso

    assncrona

  • 19/2/2008 92

    Microcontrolador PIC

    Comunicao SerialRegistradores associados com a recepo

    assncrona

  • 19/2/2008 93

    Microcontrolador PIC

    InterrupesMecanismo que torna possvel responder a estmulosexternos ou internos.Atravs do registrador INTCOM pode-se habilitar as interrupes de forma individual ou de forma global.

    O PIC 16F87X tem as seguintes fontes de Interrupo:9 Interrupo externa (RB0/INT); 9 Interrupo de Relgio (TM0);9 Interrupo da porta B (B4-B7);9 Interrupo por captura e comparao (CCP1 e 2);9 Interrupo da USART (buffer sada e entrada cheio);9 Interrupo CCP;

  • 19/2/2008 94

    Microcontrolador PIC

    InterrupesO PIC 16F87X tem as seguintes fontes de Interrupo: 9 Estouro do relgio TMR1;9 Estouro do relgio TMR2;9 Fim de escrita EEPROM;9 Fim de Converso A/D;9 Atividade na SPI ou I2C;9 Recebimento de dados na Porta Paralela Escrava;9 Coliso no barramento.

  • 19/2/2008 95

    Microcontrolador PIC

    InterrupesRB0/INT desencadeada com um impulso ascendente ou descendente (bit INTDG no registrador OPTION) no pino INT (RB0).Estouro do contador TMR0 na passagem de FFh para 00h seta o bit TOIF no registrador INTCON (contador de tempo)Pinos 4,5,6 e 7 da porta B devem ser definidos previamente como entradas. A variao de entrada pe 1no bit RBIF (INTCON). A interrupo pode ser habilitada/desabilitada pondo 1 ou 0 no RBIE (INTCON)Interrupo por comparao Pode ser habilitada atravs dos bits CMIE (reg PIE1) e PEIE (reg INTCON). Utiliza os comparadores C1 e C2

  • 19/2/2008 96

    Microcontrolador PIC

    InterrupesInicialmente deve-se estabelecer quais interrupes devem estar habilitadas bem como setar o bit GIE (reg INTCON)Comandos de retorno da interrupo:9RETURN;9RETLW;9RETFIE (pe 1 automaticamento no bit GIE, permitindo novas interrupes).

  • 19/2/2008 97

    Microcontrolador PIC

    Interrupes - RegistradoresRegistrador INTCON

    Bit 0 Flag interrupo de mudana nos bits B4 a B71 Pelo menos um bit mudou de estado0 Nenhum bit mudou de estado

    Bit 1 Flag interrupo INT/RB01 Interrupo externa ocorreu0 No ocorreu interrupo externa

  • 19/2/2008 98

    Microcontrolador PIC

    Interrupes - RegistradoresRegistrador INTCON

    Bit 2 Flag Timer 0 overflow1 Contagem mudou de 00h para FFh0 No ocorreu overflow na contagem

    Bit 3 Habilita interrupo na mudana nos pinos B4 a B71 Habilita a interrupo 0 Desabilita a interrupo

    Bit 4 Habilita interrupo no pino INT/RB01 Habilita a interrupo 0 Desabilita a interrupo

  • 19/2/2008 99

    Microcontrolador PIC

    Interrupes - RegistradoresRegistrador INTCONBit 5 Habilita interrupo de Overflow do Timer 01 Habilita interrupo0 Desabilita interrupo

    Bit 6 Habilita interrupo dos perifricos1 Habilita todas as interrupes no mascaradas de perifricos0 Desabilita todas as interrupes de perifricos

    Bit 7 Habilita interrupo global1 Habilita todas as interrupes no mascaradas0 Desabilita todas as interrupes

  • 19/2/2008 100

    Microcontrolador PIC

    Interrupes - RegistradoresRegistrador PIE1

    Bit 0 Habilita interrupo de Overflow do Timer11 Habilita interrupo0 Desabilita interrupo

    Bit 1 Habilita interrupo por igualdade do TMR2 e PR21 Habilita interrupo 0 Desabilita interrupo

  • 19/2/2008 101

    Microcontrolador PIC

    Interrupes - RegistradoresRegistrador PIE1Bit 2 Habilita interrupo do bloco CCP11 - Habilita interrupo0 Desabilita interrupo

    Bit 3 Habilita interrupo da SPI1 Habilita interrupo0 Desabilita interrupo

    Bit 4 Habilita interrupo de transmisso da USART1 Habilita interrupo0 Desabilita interrupo

  • 19/2/2008 102

    Microcontrolador PIC

    Interrupes - RegistradoresRegistrador PIE1Bit 5 Habilita interrupo de recepo da USART1 Habilita interrupo0 Desabilita interrupo

    Bit 6 Habilita interrupo do conversor A/D1 - Habilita interrupo0 Desabilita interrupo

    Bit 7 Habilita interrupo da porta paralela escrava1 Habilita interrupo0 Desabilita interrupo

  • 19/2/2008 103

    Microcontrolador PIC

    Interrupes - RegistradoresRegistrador PIR1

    Registrador PIE2

    Registrador PIR2

  • 19/2/2008 104

    Microcontrolador PIC

    Interrupes - Circuito

  • 19/2/2008 105

    Microcontrolador PIC

    Configurao Timer 0, 1, 2 e Watch-Dog

  • 19/2/2008 106

    Microcontrolador PIC

    Registrador Option

    bits 0 a 2 PS0, PS1, PS2 (bits de seleo do divisor Prescaler) - Estes trs bits definem o fator de diviso do prescaler.

  • 19/2/2008 107

    Microcontrolador PIC

    Registrador Option

    bit 3 PSA (Bit de Atribuio do Prescaler) Atribuio do prescaler.1 = prescaler atribudo ao watchdog;0 = prescaler atribudo ao temporizador TMR0.

  • 19/2/2008 108

    Microcontrolador PIC

    Registrador Option

  • 19/2/2008 109

    Microcontrolador PIC

    Registrador Optionbit 4 T0SE (bit de seleo de borda ativa em TMR0) Sinal atravs do pino RA4/TOCK1.1 = borda de descida;0 = borda de subida.

    bit 5 TOCS (bit de seleo da fonte de clock em TMR0)1 = sinais externos (RA4/TOCKI);0 = do clock interno.

  • 19/2/2008 110

    Microcontrolador PIC

    Registrador Optionbit 6 INDEDG (bit de seleo da borda de interrupo) Interrupo atravs do pino RB0/INT.1 = borda de subida;0 = borda de descida.

    bit 7 RBPU (Habilitao dos pull-up nos bits da porta B)1 = resistncias de pull-up desligadas;0 = resistncias de pull-up ligadas.

  • 19/2/2008 111

    Microcontrolador PIC

    Registrador OptionSETUP_TIMER_0()Sintax: setup_timer_0 ( mode)

    Parmetros: mode pode ser uma ou duas das constantes definidas no arquivo devices .h file. RTCC_INTERNAL, RTCC_EXT_L_TO_H or RTCC_EXT_H_TO_L,

    RTCC_DIV_2, RTCC_DIV_4, RTCC_DIV_8, RTCC_DIV_16, RTCC_DIV_32, RTCC_DIV_64, RTCC_DIV_128, RTCC_DIV_256

    Uma constante de cada grupo pode ser usada, unidas pelo operador |

    Examples: setup_timer_0 (RTCC_DIV_2|RTCC_EXT_L_TO_H);

  • 19/2/2008 112

    Microcontrolador PIC

    Timer 1O modo de operao determinado pelo bit de seleo de clock, TMR1CS (bit 1 do Reg. T1CON).

    Bit 0 (bit TMR1ON bit de ativao do Timer 1)1 = Timer 1 ativado0 = Timer 1 desativado;

  • 19/2/2008 113

    Microcontrolador PIC

    Timer 1Bit 1 (bit TMR1CS bit que seleciona a fonte de clock do Timer 1)1 = Sinal de clock externo (pino RC0/T1OSO/T1CKI (contagem ocorre na borda de subida do sinal) 0 = Sinal interno de clock (Fosc/4).

    Bit 2 (bit T1SYNC bit de sincronizao do clock externo)

    TMR1CS =11 = No sincroniza sinal de clock externo 0 = Sincroniza sinal de clock externo.

    TMR1CS =0No tem efeito

  • 19/2/2008 114

    Microcontrolador PIC

    Timer 1Bit 3 (bit T1OSCEN bit de habilitao do oscilador interno do Timer 1) configura-se o PIC para operar com oscilador interno. O mesmo gera um sinal com uma freqncia de 200KHz (a 4MHz a depender do PIC). 1 = oscilador habilitado0 = oscilador desligado (elimina consumo de energia)

    Bits 5-4 (bits de seleo do pr-escalonador do sinal da entrada de clock)

    11 = Escalonamento de 1:810 = Escalonamento de 1:401 = Escalonamento de 1:200 = Escalonamento de 1:1

  • 19/2/2008 115

    Microcontrolador PIC

    Timer 1Bits 7-6 (bits no usados lidos como 0)

  • 19/2/2008 116

    Microcontrolador PIC

    Timer 2# Timer de 8 bits com um pr-escalonador e ps-escalonador. # Pode ser usado como a base de tempo no modo PWM dos mdulos CCP. # TMR2 um registra-dor de escrita e leitura e apagado em qual-quer evento de reset.

  • 19/2/2008 117

    Microcontrolador PIC

    Timer 2

    Bits 1-0 (bit T2CKPS1 e T2CKPS0 bit de seleo do pr-escalonador) 00 = Escalonamento de 101 = Escalonamento de 41x = Escalonamento de 16

    Registrador de Controle do Timer 2 T2CON (endereo 12h)

  • 19/2/2008 118

    Microcontrolador PIC

    Timer 2Bit 2 (bit TMR2ON bit de ativao do Timer 2).1 = Timer 2 ativado0 = Timer 2 desativado;

    Bits 6-3 (bits TOUTPS3:TOUTPS0 bits de seleo do ps-escalonador)

    0000 = Escalonamento de 10001 = Escalonamento de 20010 = Escalonamento de 3

    1110 = Escalonamento de 151111 = Escalonamento de 16

  • 19/2/2008 119

    Microcontrolador PIC

    Instrues associadas aos temporizadoresSintax: set_timer0(value) or set_rtcc (value)

    set_timer1(value)set_timer2(value)

    Parmetros: Timer 1 - 16 bit int.Timers 0 e 2 - 8 bit int.

    Funo: Seta o valor no registrador de contagem do timer

    Exemplo: // 20 mhz clock, no prescaler, set timer 0 // to overflow in 35usset_timer0(81); // 256-(.000035/(4/20000000))

  • 19/2/2008 120

    Microcontrolador PIC

    Instrues associadas aos temporizadoresSintax: value=get_timer0() mesmo que: value=get_rtcc()

    value=get_timer1()value=get_timer2()value=get_timer3()value=get_timer4()value=get_timer5()

    Parmetros: NenhumRetorna: Timers 1 - 16 bit int.

    Timers 0 e 2 - 8 bit int.

    Funo: Returna o valor de contagem do timerExemplo: set_timer0(0);

    while ( get_timer0() < 200 ) ;

  • 19/2/2008 121

    Microcontrolador PIC

    Configurao Conversor A/D

  • 19/2/2008 122

    Microcontrolador PIC

    CONVERSOR A/DDiagrama de

    blocos do conversor A/D

  • 19/2/2008 123

    Microcontrolador PIC

    CONVERSOR A/DO conversor A/D possui quatro registradores:Registrador do byte mais significado do resultado da converso (ADRESH);Registrador do byte menos significado do resultado da converso (ADRESL);Registrador de controle 0 (ADCON0);Registrador de controle 1. (ADCON1).Quando a converso concluda, o resultado carregado em ADRES, o bit GO/DONE (bit 2 do Reg. ADCON0) resetado e o flag de interrupo, bit ADIF, setado.

  • 19/2/2008 124

    Microcontrolador PIC

    CONVERSOR A/DO conversor A/D necessita de no mnimo 12 TAD para

    realizar uma converso de 10 bits. A fonte do clock do conversor A/D selecionada por software entre as possibilidades abaixo: 2Tosc; 8Tosc; 32Tosc; Oscilador RC interno.

    Para uma converso correta, o clock do conversor A/D deve ser selecionado para garantir um TAD mnimo de 1.6s.

  • 19/2/2008 125

    Microcontrolador PIC

    CONVERSOR A/DTAD x Mxima freqncia de converso

  • 19/2/2008 126

    Microcontrolador PIC

    CONVERSOR A/DJustificao do resultado da converso A/D

  • 19/2/2008 127

    Microcontrolador PIC

    CONVERSOR A/DRegistrador ADCON0 - Controla a operao do mdulo

    A/D (endereo 1Fh).

    Bit 0 (bit ADON bit que ativa o conversor A/D) Este bit ativa a operao do conversor A/D.

    1 = conversor A/D ativado0 = conversor A/D desligadoBit 1 (bit no usado lido como 0)

  • 19/2/2008 128

    Microcontrolador PIC

    CONVERSOR A/DBit 2 (bit GO/ bit de status de converso) Este bit

    indica se uma converso iniciada j foi concluda.Se ADON =11 = converso A/D em andamento0 = no h converso A/D em andamento (esse bit

    automaticamente resetado quando a converso A/D concluda).

    Bits 5-3 (bits CHS2:CHS0 bits de seleo de canal) Estes bits selecionam a entrada analgica cujo sinal ser convertido.

    000 = canal 0, (RA0/AN0)001 = canal 1, (RA1/AN1)010 = canal 2, (RA2/AN2)

  • 19/2/2008 129

    Microcontrolador PIC

    CONVERSOR A/D011 = canal 3, (RA3/AN3)100 = canal 4, (RA5/AN4)101 = canal 5, (RE0/AN5)110 = canal 6, (RE1/AN6)111 = canal 7, (RE2/AN7)

    Bits 7-6 (bits ADCS1:ADCS0 bits de seleo de clock) Estes bits selecionam a fonte do sinal de clock para o conversor A/D.

    00 = FOSC/201 = FOSC/810 = FOSC/3211 = FRC (clock derivado de um oscilador RC)

  • 19/2/2008 130

    Microcontrolador PIC

    CONVERSOR A/DRegistrador ADCON1 Configura a funo dos pinos das

    portas (A e E) (endereo 9Fh)

    Bits 3-0 (bits PCFG3:PCFG0 bits de controle de configurao dos pinos A/D) Este bits configuram os pinos analgicos das Portas A e E.

  • 19/2/2008 131

    Microcontrolador PIC

    CONVERSOR A/D

  • 19/2/2008 132

    Microcontrolador PIC

    CONVERSOR A/DBits 6-4 (bits no usados lido como 0)

    Bit 7 (bit ADFM bit de seleo de formato do resultado da converso A/D) Este bit seleciona o formato de justificao do resultado gerado pelo conversor A/D.

    1 = Justificao direita. Os 6 bits mais significativos de ADRESH sero iguais a 0.

    0 = Justificao esquerda. Os 6 bits menos significativos de ADRESL sero iguais a 0.

  • 19/2/2008 133

    Microcontrolador PIC

    Instrues associadas ao Conversor A/DSintax: setup_adc ( mode);

    Parmetro: mode Modo analgico para digital. As opes vlidas variam entre dispositivos. Opes tpicas: ADC_OFF ADC_CLOCK_INTERNAL ADC_CLOCK_DIV_32

    Funo: Configura o conversor A/D.Exemplo: setup_adc_ports( ALL_ANALOG );

    setup_adc(ADC_CLOCK_INTERNAL );set_adc_channel( 0 );

  • 19/2/2008 134

    Microcontrolador PIC

    Instrues associadas ao Conversor A/DSintax: set_adc_channel ( chan)

    Parmetro: chan o nmero do canal selecionado. Os nmeros iniciam em 0 (AN0) e seguem de acordo com o nmero de canais disponveis (ver datasheet do dispositivo).

    Funo: Especifica o canal a ser convertido no prximo READ_ADC. Deve ser respeitado um tempo de amostragem antes de iniciar uma converso aps uma mudana de canal. Em geral 10us suficiente

    Exemplos: set_adc_channel(2);delay_us(10);value = read_adc();

  • 19/2/2008 135

    Microcontrolador PIC

    Captura/Comparao/PWMOs mdulos CCP (Captura/Comparao/PWM) so formados por um registrador de 16 bits que pode operar como:Registrador de captura de 16 bits;Registrador de comparao de 16 bitsRegistrador de duty-cycle no modo PWM Mestre/Escravo.

  • 19/2/2008 136

    Microcontrolador PIC

    Captura/Comparao/PWMModo de operao do mdulo CCP e recursos de Timer necessrios

    Interao entre os mdulos CCP

  • 19/2/2008 137

    Microcontrolador PIC

    Configurao Bloco Capture/Compare/PWM

  • 19/2/2008 138

    Microcontrolador PIC

    Captura/Comparao/PWMRegistradores 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.0000 = Modos Captura/Comparao/PWM desligados (reseta mdulo CCPx )

  • 19/2/2008 139

    Microcontrolador PIC

    Captura/Comparao/PWM0100 = Modo captura, a cada 1 transio negativa (10)0101 = Modo captura, a cada 1 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)

  • 19/2/2008 140

    Microcontrolador PIC

    Captura/Comparao/PWM1011 = Modo comparao, ativa Special Event trigger(bit CCPxIF seta, pino CCPx no afetado); CCP1 reseta TMR1; CCP2 reseta TMR1 e inicia uma converso A/D (se mdulo A/D habilitado).11xx = Modo PWMBits 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 usadoModo Comparao: No usadoModo PWM: Dois bits LSB do duty-cycle do sinal PWM. Os oito MSBs so gravados no registrador CCPRxL.

  • 19/2/2008 141

    Microcontrolador PIC

    Captura/Comparao/PWMModo Captura

  • 19/2/2008 142

    Microcontrolador PIC

    Captura/Comparao/PWMModo Comparao

  • 19/2/2008 143

    Microcontrolador PIC

    Captura/Comparao/PWMModo PWMO bloco CCPx produz um sinal PWM com uma resoluo de at 10 bits.

    Um sinal PWM caracterizado pelo seu perodo e o duty-cycle, que corresponde ao tempo em que o sinal permanece em nvel alto.

    O perodo do sinal PWM especificado pelo registrador PR2: Perodo PWM = [(PR2) + 1] 4 TOSC (TMR2 prescale value).

  • 19/2/2008 144

    Microcontrolador PIC

    Captura/Comparao/PWMModo PWMQuando TMR2 igual a PR2, os seguintes eventos ocorrem:O TMR2 apagado;O pino CCP1 setado (exceto se o duty-cycle do PWM = 0%, quando o CCP1 no ser setado);O PWM duty-cycle copiado de CCPR1L para CCPR1H.

    O duty-cycle do PWM definido escrevendo para o registrador CCPR1L (bits mais significativos) e para os bits 5 e 4 do registrador CCP1CON.

  • 19/2/2008 145

    Microcontrolador PIC

    Captura/Comparao/PWMModo PWMDeterminao do duty-cycle em termos de tempo:Duty Cycle do PWM = (CCPR1L:CCP1CON) Tosc (TMR2 prescale value)

    O novo valor de duty-cycle s atualizado no CCPR1H, quando os valores dos registradores PR2 e TMR2 coincidirem (ao fim do perodo PWM).

    No modo PWM CCPR1H um registrador apenas de leitura.

  • 19/2/2008 146

    Microcontrolador PIC

    Captura/Comparao/PWMModo PWM

  • 19/2/2008 147

    Microcontrolador PIC

    InterrupesMecanismo que torna possvel responder a estmulosexternos ou internos.Atravs do registrador INTCOM pode-se habilitar as interrupes de forma individual ou de forma global.

    O PIC 16F87X tem as seguintes fontes de Interrupo:9 Interrupo externa (RB0/INT); 9 Interrupo de Relgio (TM0);9 Interrupo da porta B (B4-B7);9 Interrupo por captura e comparao (CCP1 e 2);9 Interrupo da USART (buffer sada e entrada cheio);9 Interrupo CCP;

  • 19/2/2008 148

    Microcontrolador PIC

    Configurao Porta Serial

  • 19/2/2008 149

    Microcontrolador PIC

    InterrupesO PIC 16F87X tem as seguintes fontes de Interrupo: 9 Estouro do relgio TMR1;9 Estouro do relgio TMR2;9 Fim de escrita EEPROM;9 Fim de Converso A/D;9 Atividade na SPI ou I2C;9 Recebimento de dados na Porta Paralela Escrava;9 Coliso no barramento.

  • 19/2/2008 150

    Microcontrolador PIC

    Interrupes - Circuito

  • 19/2/2008 151

    Microcontrolador PIC

    InterrupesInicialmente deve-se estabelecer quais interrupes devem estar habilitadas bem como setar o bit GIE (reg INTCON)Comandos de retorno da interrupo:9RETURN;9RETLW;9RETFIE (pe 1 automaticamento no bit GIE, permitindo novas interrupes).

  • 19/2/2008 152

    Microcontrolador PIC

    Interrupes - RegistradoresRegistrador INTCON

    Bit 0 Flag interrupo de mudana nos bits B4 a B71 Pelo menos um bit mudou de estado0 Nenhum bit mudou de estado

    Bit 1 Flag interrupo INT/RB01 Interrupo externa ocorreu0 No ocorreu interrupo externa

  • 19/2/2008 153

    Microcontrolador PIC

    Interrupes - RegistradoresRegistrador INTCON

    Bit 2 Flag Timer 0 overflow1 Contagem mudou de 00h para FFh0 No ocorreu overflow na contagem

    Bit 3 Habilita interrupo na mudana nos pinos B4 a B71 Habilita a interrupo 0 Desabilita a interrupo

    Bit 4 Habilita interrupo no pino INT/RB01 Habilita a interrupo 0 Desabilita a interrupo

  • 19/2/2008 154

    Microcontrolador PIC

    Interrupes - RegistradoresRegistrador INTCONBit 5 Habilita interrupo de Overflow do Timer 01 Habilita interrupo0 Desabilita interrupo

    Bit 6 Habilita interrupo dos perifricos1 Habilita todas as interrupes no mascaradas de perifricos0 Desabilita todas as interrupes de perifricos

    Bit 7 Habilita interrupo global1 Habilita todas as interrupes no mascaradas0 Desabilita todas as interrupes

  • 19/2/2008 155

    Microcontrolador PIC

    Interrupes - RegistradoresRegistrador PIE1

    Bit 0 Habilita interrupo de Overflow do Timer11 Habilita interrupo0 Desabilita interrupo

    Bit 1 Habilita interrupo por igualdade do TMR2 e PR21 Habilita interrupo 0 Desabilita interrupo

  • 19/2/2008 156

    Microcontrolador PIC

    Interrupes - RegistradoresRegistrador PIE1Bit 2 Habilita interrupo do bloco CCP11 - Habilita interrupo0 Desabilita interrupo

    Bit 3 Habilita interrupo da SPI1 Habilita interrupo0 Desabilita interrupo

    Bit 4 Habilita interrupo de transmisso da USART1 Habilita interrupo0 Desabilita interrupo

  • 19/2/2008 157

    Microcontrolador PIC

    Interrupes - RegistradoresRegistrador PIE1Bit 5 Habilita interrupo de recepo da USART1 Habilita interrupo0 Desabilita interrupo

    Bit 6 Habilita interrupo do conversor A/D1 - Habilita interrupo0 Desabilita interrupo

    Bit 7 Habilita interrupo da porta paralela escrava1 Habilita interrupo0 Desabilita interrupo

  • 19/2/2008 158

    Microcontrolador PIC

    Interrupes - RegistradoresRegistrador PIR1

    Registrador PIE2

    Registrador PIR2