manual de tecnologia mecanica 2° edição brasileira
DESCRIPTION
manual de tecnologia mecanica 2° edição brasileiraTRANSCRIPT
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 – Descrição GeralUtiliza arquitetura Harvard (RISC);
Permite interrupções de origem interna e externa;
O pipeline permite execuções de instruções em um
ciclo, exceto os desvios;
Possui 35 instruções;
Possui blocos periféricos internos.
19/2/2008 4
Microcontrolador PIC
Arquiteturas
Os microcontroladores com arquitetura Havard são chamados de RISC (Reduced Instruction Set Computer)
Os microcontroladores com a arquitetura de Von Neumann são também chamados CISC (Complex Instruction Set Computer)
19/2/2008 5
Microcontrolador PIC
Arquitetura HavardCapacidade de processamento maior, sem
necessidade de elevar a freqüência de clock da CPU.
Separação das memórias de dados e programa: Possibilidade de representar instruções por palavras de mais que 8 bits (Ex 14bits – PIC)
Busca e execução simultânea de instruções.
19/2/2008 6
Microcontrolador PIC
Diagrama de Blocos
19/2/2008 7
Microcontrolador PIC
Unidade Central de ProcessamentoRealiza a extração das instruções, decodificação e
execução.
19/2/2008 8
Microcontrolador PIC
Unidade Lógica AritméticaExecuta as operações de adição, subtração, desloca-
mento e operações lógicas. 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 dígito
bit 2 Z (bit Zero) Indicação de resultado igual a zero
bit 3 PD (Bit de baixa de tensão – 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 seleção de banco de registros da RAM) – Endereçamento direto.
11 = banco de registros 310 = banco de registros 201 = banco de registros 100 = banco de registros 0
bit 7 IRP (Bit de seleção de banco de registros) -Endereçamento indireto.
1 = bancos 2 e 3 (endereços de 100h a 1FFh)0 = bancos 0 e 1 (endereços de 00h a FFh)
19/2/2008 11
Microcontrolador PIC
Registrador Option
bits 0 a 2 PS0, PS1, PS2 (bits de seleção do divisor Prescaler) - Estes três bits definem o fator de divisão do prescaler.
19/2/2008 12
Microcontrolador PIC
Registrador Option
bit 3 PSA (Bit de Atribuição do Prescaler) – Atribuição do prescaler.1 = prescaler atribuído ao watchdog;0 = prescaler atribuído ao temporizador TMR0.
19/2/2008 13
Microcontrolador PIC
Registrador Option
19/2/2008 14
Microcontrolador PIC
Registrador Optionbit 4 T0SE (bit de seleção de borda ativa em TMR0) –Sinal através do pino RA4/TOCK1.1 = borda de descida;0 = borda de subida.
bit 5 TOCS (bit de seleção 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 seleção da borda de interrupção)– Interrupção através do pino RB0/INT.1 = borda de subida;0 = borda de descida.
bit 7 RBPU (Habilitação dos pull-up nos bits da porta B)1 = resistências de “pull-up” desligadas;0 = resistências 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 saída;onde x =A, B, C, D, E, para o PIC 16F877.
19/2/2008 17
Microcontrolador PIC
Configuração da Porta A
Pinos 0, 1, 2, 3 e 4 da porta A são 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 freqüência)
programável;Utiliza sinal de clock interno ou externo;Gera interrupção quando a contagem muda de FF
para 00;Permite selecionar o tipo de transição quando usa
clock externo (Borda de subida ou descida).
19/2/2008 20
Microcontrolador PIC
Timer 0# Modos de contagem
Modo timer - Incrementa a cada ciclo de instrução (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 1Contador/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 Operação:Como timer: Timer 1 incrementa a cada ciclo de instrução;Como contador: Timer 1 incrementa a cada transição do sinal de clock externo.
19/2/2008 23
Microcontrolador PIC
Timer 1O modo de operação é determinado pelo bit de seleção de clock, TMR1CS (bit 1 do Reg. T1CON).
Bit 0 (bit TMR1ON – bit de ativação 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 sincronização do clock externo)TMR1CS =1
1 = Não sincroniza sinal de clock externo 0 = Sincroniza sinal de clock externo.
TMR1CS =0Não tem efeito
19/2/2008 25
Microcontrolador PIC
Timer 1Bit 3 (bit T1OSCEN– bit de habilitação do oscilador interno do Timer 1) configura-se o PIC para operar com oscilador interno. O mesmo gera um sinal com uma freqüência de ≈ 200KHz (a 4MHz a depender do PIC). 1 = oscilador habilitado0 = oscilador desligado (elimina consumo de energia)
Bits 5-4 (bits de seleção 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 não 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 pós-
escalonador. Pode ser usado como a base de tempo no modo PWM
dos módulos 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 seleção do pré-escalonador) 00 = Escalonamento de 101 = Escalonamento de 41x = Escalonamento de 16
Registrador de Controle do Timer 2 – T2CON (endereço 12h)
19/2/2008 30
Microcontrolador PIC
Timer 2Bit 2 (bit TMR2ON – bit de ativação do Timer 2).1 = Timer 2 ativado0 = Timer 2 desativado;
Bits 6-3 (bits TOUTPS3:TOUTPS0 – bits de seleção do pós-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 não usado – lido como 0)
Registradores associados com o Timer 2 (modos Timer/Contador)
19/2/2008 32
Microcontrolador PIC
Captura/Comparação/PWMOs módulos CCP (Captura/Comparação/PWM) são formados por um registrador de 16 bits que pode operar como:
Registrador de captura de 16 bits;Registrador de comparação de 16 bitsRegistrador de “duty-cycle” no modo PWM
Mestre/Escravo.
19/2/2008 33
Microcontrolador PIC
Captura/Comparação/PWMMódulo CCP1O registrador CCP do módulo CCP1 (CCPR1) éformado por dois registradores de 8 bits: CCPR1L e CCPR1H.O registrador CCP1CON controla a operação do CCP1.“Special Event Trigger” é gerado quando no modo comparação ocorre a igualdade entre o CCPR1 e o registrador de comparação.
No “Special Event Trigger” o conteúdo do Timer 1 éresetado.
19/2/2008 34
Microcontrolador PIC
Captura/Comparação/PWMMódulo CCP2O registrador CCP do módulo CCP2 (CCPR2) éformado por dois registradores de 8 bits: CCPR2L e CCPR2H. O registrador CCP2CON controla a operação do CCP2. O “special event trigger” é gerado no modo comparação quando o conteúdo do registrador de contagem do Timer 1 iguala ao conteúdo do registrador de comparação.
“Special Event Trigger” reseta o Timer 1 e pode iniciar uma conversão A/D.
19/2/2008 35
Microcontrolador PIC
Captura/Comparação/PWMModo de operação do módulo CCP e recursos de Timer necessários
Interação entre os módulos CCP
19/2/2008 36
Microcontrolador PIC
Captura/Comparação/PWMRegistradores de Controle CCP1CON e CCP2CON (endereços 17h e 1Dh)
Bits 3-0 (bit CCPxM3: CCPxM0 – bits de seleção de modo de operação) – Estes bits selecionam o modo como operarão os blocos CCP1 e CCP2.
0000 = Modos Captura/Comparação/PWM desligados (reseta módulo CCPx )
19/2/2008 37
Microcontrolador PIC
Captura/Comparação/PWM0100 = Modo captura, a cada 1 transição negativa
(1→0);0101 = Modo captura, a cada 1 transição positiva (0→1);0110 = Modo captura, a cada 4 transições positivas
(1→0);0111 = Modo captura, a cada 16 transições positivas
(1→0);1000 = Modo comparação, seta pino de saída (bit
CCPxIF é setado);1001 = Modo comparação, reseta pino de saída (bit
CCPxIF é setado);1010 = Modo comparação, gera interrupção (bit CCPxIF
é setado, pino CCPx não é afetado);
19/2/2008 38
Microcontrolador PIC
Captura/Comparação/PWM1011 = Modo comparação, ativa “Special Event
trigger”(bit CCPxIF é seta, pino CCPx não é afetado); CCP1 reseta TMR1; CCP2 reseta TMR1 e inicia uma conversão A/D (se módulo 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: Não usadoModo Comparação: Não usadoModo PWM: Dois bits LSB do duty-cycle do sinal PWM. Os oito MSB’s são gravados no registrador CCPRxL.
19/2/2008 39
Microcontrolador PIC
Captura/Comparação/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/Comparação/PWMModo Captura
Quando 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 sincronização do sinal de clock externo com o clock interno.
19/2/2008 41
Microcontrolador PIC
Captura/Comparação/PWMModo Captura – Diagrama de Blocos
19/2/2008 42
Microcontrolador PIC
Captura/Comparação/PWMModo ComparaçãoO valor do registrador CCPR1 (16 bits) e/ou CCPR2 (16 bits) é (são) constantemente comparado(s) com o valor do registrador TMR1.
Quando os valores se igualam, o pino RC2/CCP1 e/ou RC1/CCP2 é (são):
Ativado(s);Desativado(s);Permanece(m) inalterado(s).
Simultaneamente o flag CCP1IF é setado, gerando uma interrupção, se habilitada.
19/2/2008 43
Microcontrolador PIC
Captura/Comparação/PWMModo ComparaçãoNo modo comparação os pinos RC2/CCP1, RC1/CCP2 e RB3/CCP1 devem ser configurados como saídas.
No modo de comparação pode ser gerado um “Special Event Trigger”.
No módulo CCP1, reseta o par de registradores que forma o TMR1;
No módulo CCP2 reseta o par de registradores que forma o TMR1 e pode iniciar uma conversão A/D (se o módulo A/D está habilitado).
19/2/2008 44
Microcontrolador PIC
Captura/Comparação/PWMModo Comparação
19/2/2008 45
Microcontrolador PIC
Captura/Comparação/PWMRegistradores associados com o Capture, Compare e Timer 1
19/2/2008 46
Microcontrolador PIC
Captura/Comparação/PWMModo PWMO bloco CCPx produz um sinal PWM com uma resolução de até 10 bits.
Um sinal PWM é caracterizado pelo seu período e o “duty-cycle”, que corresponde ao tempo em que o sinal permanece em nível alto.
O período do sinal PWM é especificado pelo registrador PR2: Período PWM = [(PR2) + 1] • 4 • TOSC • (TMR2 prescale value).
19/2/2008 47
Microcontrolador PIC
Captura/Comparação/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 não 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/Comparação/PWMModo PWMDeterminação do duty-cycle em termos de tempo:Duty Cycle do PWM = (CCPR1L:CCP1CON<5:4>) •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 período PWM).
No modo PWM CCPR1H é um registrador apenas de leitura.
19/2/2008 49
Microcontrolador PIC
Captura/Comparação/PWMModo PWMPasso para ajustar o módulo CCP para funcionar no modo PWM:
Ajustar o período 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 saída;Ajustar o valor do pré-escalonador e habilitar o Timer 2
configurando o registrador T2CON;Configurar o módulo CCP1 e/ou CCP2 para operação no modo
PWM;
19/2/2008 50
Microcontrolador PIC
Captura/Comparação/PWMModo PWM
19/2/2008 51
Microcontrolador PIC
Captura/Comparação/PWMRegistradores associados com o PWM e Timer 2
19/2/2008 52
Microcontrolador PIC
CONVERSOR A/DO módulo do conversor A/D possui 8 entradas
analógicas;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 binária de 10 bits; O módulo A/D tem duas entradas de tensão de
referência (alta e baixa), selecionadas por software;O módulo 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 conversão (ADRESH);
Registrador do byte menos significado do resultado da conversão (ADRESL);
Registrador de controle 0 (ADCON0);Registrador de controle 1. (ADCON1).
Quando a conversão é concluída, o resultado écarregado em ADRES, o bit GO/DONE (bit 2 do Reg. ADCON0) é resetado e o flag de interrupção, bit ADIF, ésetado.
19/2/2008 54
Microcontrolador PIC
CONVERSOR A/DOs canais de entrada analógicos devem ter seus
correspondentes bits TRIS ajustados para que os pinos das portas A e E se comportem como entradas.
Após o período de aquisição a conversão A/D pode ser iniciada conforme os seguintes passos:Configure o módulo A/D;
Configure os pinos de entrada analógica, as tensões de referência e os pinos de I/O digital (ADCON1);Selecione o canal de entrada analógica (ADCON0);Selecione a freqüência do sinal de clock do conversor A/D (ADCON0);Ative o módulo A/D;
19/2/2008 55
Microcontrolador PIC
CONVERSOR A/DConfigure a interrupção do módulo A/D (se desejado);
Reset o bit ADIF;Sete o bit ADIE;Sete o bit GIE;
Aguarde o tempo de aquisição requerido;Inicie a conversão;
Sete o bit GO/DONE (ADCON0);Aguarde o tempo de conversão ter transcorrido;Realize um POLLING no bit GO/DONE, verificando se o seu valor é zero (indicativo de fim de conversão A/D);ou aguarde pela interrupção gerada pelo módulo A/D ao fim da conversão;
19/2/2008 56
Microcontrolador PIC
CONVERSOR A/DLeia o par de registradores (ADRESH:ADRESL), resete o bit ADIF se a interrupção do conversor A/D está sendo utilizada;Para realizar uma nova conversão retorne ao passo 1 ou 2 (antes de uma nova conversão ser iniciada, deve ser aguardado um tempo de 2TAD, que é o tempo de conversão por bit, cujo valor é definido na tabela 1).
19/2/2008 57
Microcontrolador PIC
CONVERSOR A/DO conversor A/D necessita de no mínimo 12 TAD para
realizar uma conversão 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 conversão correta, o clock do conversor A/D deve ser selecionado para garantir um TAD mínimo de 1.6µs.
19/2/2008 58
Microcontrolador PIC
CONVERSOR A/DTAD x Máxima freqüência de conversão
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 não utilizados são carregados com “0”(zeros).
Quando o módulo A/D não estiver sendo utilizado, os registradores ADRESH:ADRESL podem ser usados como dois registradores de propósito geral de 8 bits.
19/2/2008 60
Microcontrolador PIC
CONVERSOR A/DJustificação do resultado da conversão 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 operação do módulo
A/D (endereço 1Fh).
Bit 0 (bit ADON – bit que ativa o conversor A/D) – Este bit ativa a operação do conversor A/D.
1 = conversor A/D ativado0 = conversor A/D desligadoBit 1 (bit não usado – lido como 0)
19/2/2008 63
Microcontrolador PIC
CONVERSOR A/DBit 2 (bit GO/– bit de status de conversão) – Este bit
indica se uma conversão iniciada já foi concluída.Se ADON =11 = conversão A/D em andamento0 = não há conversão A/D em andamento (esse bit é
automaticamente resetado quando a conversão A/D éconcluída).
Bits 5-3 (bits CHS2:CHS0 – bits de seleção de canal)– Estes bits selecionam a entrada analógica 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 seleção 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 função dos pinos das
portas (A e E) (endereço 9Fh)
Bits 3-0 (bits PCFG3:PCFG0 – bits de controle de configuração pás portas A/D) – Este bits configuram os pinos analógicos 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 não usados – lido como 0)
Bit 7 (bit ADFM – bit de seleção de formato do resultado da conversão A/D) – Este bit seleciona o formato de justificação do resultado gerado pelo conversor A/D.
1 = Justificação à direita. Os 6 bits mais significativos de ADRESH serão iguais a 0.
0 = Justificação à esquerda. Os 6 bits menos significativos de ADRESL serão iguais a 0.
19/2/2008 68
Microcontrolador PIC
CONVERSOR A/DRegistradores associados com o módulo do conversor
A/D
19/2/2008 69
Microcontrolador PIC
Comunicação SerialComunicação SerialA transmissão bit-serial converte a mensagem em um bit
por vez através de um canal. Os bits individuais são então rearranjados no destino
para compor a mensagem original.
Taxa de Transferência (Baud Rate)Velocidade com que os dados são enviados através de
um canal e é medido em transições elétricas por segundo (Hz).
Na norma EIA232, ocorre uma transição de sinal por bit, e a taxa de transferência e a taxa de bit (bit rate) são idênticas.
19/2/2008 70
Microcontrolador PIC
Comunicação SerialTransmissão Assíncrona x Transmissão SíncronaSistemas síncronos - Canais separados são usados para
transmitir dados e informação de tempo. O canal de temporização transmite pulsos de clock para
o receptor, que indica o instante de leitura do canal de dados.
Sincronização é garantida.
19/2/2008 71
Microcontrolador PIC
Comunicação SerialTransmissão Assíncrona x Transmissão SíncronaEm sistemas assíncronos, a informação trafega por um
canal único. Um oscilador preciso no receptor irá gerar um sinal de
clock interno que é igual (ou muito próximo) ao do transmissor.
Para o protocolo serial mais comum, os dados são 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 nível lógico ‘1’.
19/2/2008 72
Microcontrolador PIC
Comunicação SerialTransmissão Assíncrona x Transmissão SíncronaUm pacote de dados sempre começa com um nível
lógico ‘0’ (start bit) para sinalizar ao receptor que um transmissão foi iniciada.
O “start bit” inicializa um temporizador interno no receptor avisando que a transmissão começou e que serão necessários pulsos de clocks.
Seguido do start bit, 8 bits de dados de mensagem são enviados na taxa de transmissão especificada.
O pacote é concluído com os bits de paridade e de parada (“stop bit”).
19/2/2008 73
Microcontrolador PIC
Comunicação SerialTransmissão Assíncrona x Transmissão Síncrona
19/2/2008 74
Microcontrolador PIC
Comunicação SerialChecksum e Paridade
Ruídos e distúrbios elétricos momentâneos podem causar mudanças nos dados quando estão trafegando pelos canais de comunicação. Se o receptor falhar ao detectar isso, a mensagem recebida será incorreta. Se um erro pode ser sinalizado, pode ser possível pedir que o pacote com erro seja reenviado, ou prevenir que os dados sejam considerados corretos. Se uma redundância na informação 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
Comunicação SerialChecksum e Paridade
O bit de paridade é adicionado ao pacote de dados com o propósito de detecção de erro. Paridade-par (“even-parity”): Bit de paridade éescolhido de modo que o número total de dígitos ‘1’dos dados + bit de paridade seja um número par. Na recepção recalcula-se a paridade e a compara com o bit de paridade recebido. Se houve mudança de bit, a paridade não irá coincidir, e um erro será detectado. Se um número par de bits for trocado, a paridade coincidirá e o dado com erro será validado.
19/2/2008 76
Microcontrolador PIC
Comunicação SerialChecksum e Paridade
Outro método de detecção de erro envolve o cálculo de um “checksum” quando mensagens com mais de um byte são transmitidas pelo canal de comunicação. Um número de checksum é adicionado a seqüência do pacote de dados de tal forma que a soma dos dados mais o checksum é zero. Na recepção os dados são adicionados pelo processador local. Se a soma do pacote der resultado diferente de zero, ocorreu um erro. Na ocorrência de erros é improvável (mas não impossível) que qualquer corrupção de dados resultem em checksum igual a zero.
19/2/2008 77
Microcontrolador PIC
Comunicação SerialMódulo USART do PICO módulo Transmissor Receptor Síncrono Assíncrono
Universal (USART) pode ser configurado como um sistema Full Duplex e opera segundo um padrão de comunicação serial como o RS232
O mesmo módulo pode ser configurado como um sistema Half Duplex síncrono.
O módulo USART pode ser configurado nos seguintes modos:Assíncrono (Full Duplex)Síncrono – Master (Half Duplex)Síncrono – Slave (Half Duplex)
19/2/2008 78
Microcontrolador PIC
Comunicação SerialO módulo é formado pelos seguintes blocos:
Gerador de Baud Rate;Circuito de Amostragem;Transmissor Assíncrono;Receptor Assíncrono.
Transmissor Assíncrono
19/2/2008 79
Microcontrolador PIC
Comunicação SerialReceptor Assíncrono
19/2/2008 80
Microcontrolador PIC
Comunicação SerialRegistrador de Controle e Status da Transmissão
(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
Comunicação SerialRegistrador de Controle e Status da Transmissão
(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 – seleção de alta taxa de transmissão (High Baud Rate)) – Este bit seleciona uma taxa de transmissão (baud rate) alta.
No modo Assíncrono
19/2/2008 82
Microcontrolador PIC
Comunicação SerialRegistrador de Controle e Status da Transmissão
(End. 98H)1 = Alta taxa de transmissão0 = Baixa taxa de transmissão.No modo Síncrono
Não usadoBit 3 (bit não usado, lido como 0)
Bit 4 (bit SYNC – bit de seleção do modo de operação da USART) – Este bit seleciona como a USART operará, no modo assíncrono ou síncrono.
1 = Modo síncrono0 = Modo assíncrono.
19/2/2008 83
Microcontrolador PIC
Comunicação SerialRegistrador de Controle e Status da Transmissão
(End. 98H)Bit 5 (bit TXEN– bit de habilitação de transmissão) –
Este bit habilita o módulo de transmissão da USART.1 = Transmissão habilitada0 = Transmissão desabilitada.Nota: SREN/CREN tem prioridade sobre o bit TXEN
no modo síncrono
Bit 6 (bit TX9 – bit de habilitação da transmissão do nono bit) – Este bit habilita a transmissão do nono bit de dados.
1 = Seleciona transmissão de 9 bits0 = Seleciona transmissão de 8 bits.
19/2/2008 84
Microcontrolador PIC
Comunicação SerialRegistrador de Controle e Status da Transmissão
(End. 98H)Bit 7 (bit CSRC – bit de seleção da fonte de clock
para a USART) – Este bit seleciona a fonte do sinal de clock quando a USART opera no modo síncrono.
Modo assíncronoNão usado
Modo Síncrono1 = Modo Mestre (clock gerado internamente pelo RG)0 = Modo escravo (clock externo).
19/2/2008 85
Microcontrolador PIC
Comunicação SerialRegistrador de Controle e Status da Recepção (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
Comunicação SerialRegistrador de Controle e Status da Recepção (End.
18H)Bit 1 (bit OERR – bit de erro de “overrun”) – Setado
quando um segundo byte é gravado no registrador de recepção, antes do byte anterior ter sido lido.
1 = Erro de overrun (este bit pode ser apagado resetando o bit CREN)
0 = Não 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 recepção do próximo byte válido
0 = Não houve erro de frame.
19/2/2008 87
Microcontrolador PIC
Comunicação SerialRegistrador de Controle e Status da Recepção (End.
18H)Bit 3 (bit ADDEN – bit que habilita a detecção de
endereço) – Este bit permite utilizar o nono bit da palavra de dados para identificação de palavras de endereço (RX9 – 1).
Modo assíncrono, bit 9 habilitado 1 = Habilita detecção de endereço, habilita interrupção e
faz leitura do buffer de recepção quando RSR<8> ésetado
0 = Desabilita a detecção de endereço. Todos os bytes são recebidos e o nono bit pode ser usado como bit de paridade.
19/2/2008 88
Microcontrolador PIC
Comunicação SerialRegistrador de Controle e Status da Recepção (End.
18H)Bit 4 (bit CREN – bit que habilita a recepção no
modo contínuo) – Este bit habilita a USART a receber de forma contínua dados seriais.
Modo Assíncrono1 = habilita recepção contínua0 = Desabilita recepção contínua.Modo Síncrono1 = habilita recepção contínua até o bit CREN ser
resetado (CREN tem prioridade sobre SREN)0 = Desabilita recepção contínua.
19/2/2008 89
Microcontrolador PIC
Comunicação SerialRegistrador de Controle e Status da Recepção (End.
18H)Bit 5 (bit SREN– bit de habilitação de recepção byte-
a-byte) – Este bit habilita o módulo de recepção da USART a receber dados byte a byte.
Modo AssíncronoNão usado nesse modo
Modo Síncrono (Mestre)1 = habilita recepção byte-a-byte0 = Desabilita recepção byte-a-byte.Nota: Esse bit é resetado após a recepção do byteModo Síncrono (Escravo)
Não usado nesse modo
19/2/2008 90
Microcontrolador PIC
Comunicação SerialRegistrador de Controle e Status da Recepção (End.
18H)Bit 6 (bit RX9 – bit de habilitação da recepção do
nono bit) – Este bit habilita a recepção do nono bit de dados.
1 = Seleciona recepção de 9 bits0 = Seleciona recepção de 8 bits.Bit 7 (bit SPEN – bit de habilitação da porta serial) –
Este bit ativa ou desliga o bloco de comunicação 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
Comunicação SerialRegistradores associados com a transmissão
assíncrona
19/2/2008 92
Microcontrolador PIC
Comunicação SerialRegistradores associados com a recepção
assíncrona
19/2/2008 93
Microcontrolador PIC
InterrupçõesMecanismo que torna possível responder a “estímulos”
externos ou internos.Através do registrador INTCOM pode-se habilitar as
interrupções de forma individual ou de forma global.
O PIC 16F87X tem as seguintes fontes de Interrupção:Interrupção externa (RB0/INT); Interrupção de Relógio (TM0);Interrupção da porta B (B4-B7);Interrupção por captura e comparação (CCP1 e 2);Interrupção da USART (buffer saída e entrada cheio);Interrupção CCP;
–
19/2/2008 94
Microcontrolador PIC
InterrupçõesO PIC 16F87X tem as seguintes fontes de Interrupção:
Estouro do relógio TMR1;Estouro do relógio TMR2;Fim de escrita EEPROM;Fim de Conversão A/D;Atividade na SPI ou I2C;Recebimento de dados na Porta Paralela Escrava;Colisão no barramento.
–
19/2/2008 95
Microcontrolador PIC
InterrupçõesRB0/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 variação de entrada põe “1”no bit RBIF (INTCON). A interrupção pode ser habilitada/desabilitada pondo 1 ou 0 no RBIE (INTCON)
Interrupção por comparação – Pode ser habilitada através dos bits CMIE (reg PIE1<6>) e PEIE (reg INTCON<6>). Utiliza os comparadores C1 e C2
19/2/2008 96
Microcontrolador PIC
InterrupçõesInicialmente deve-se estabelecer quais interrupções
devem estar habilitadas bem como setar o bit GIE (reg INTCON<7>)
Comandos de retorno da interrupção:RETURN;RETLW;RETFIE (põe ‘1’ automaticamento no bit GIE,
permitindo novas interrupções).
19/2/2008 97
Microcontrolador PIC
Interrupções - RegistradoresRegistrador INTCON
Bit 0 – Flag interrupção de mudança nos bits B4 a B71 – Pelo menos um bit mudou de estado0 – Nenhum bit mudou de estado
Bit 1 – Flag interrupção INT/RB01 – Interrupção externa ocorreu0 – Não ocorreu interrupção externa
19/2/2008 98
Microcontrolador PIC
Interrupções - RegistradoresRegistrador INTCON
Bit 2 – Flag Timer 0 overflow1 – Contagem mudou de 00h para FFh0 – Não ocorreu overflow na contagem
Bit 3 – Habilita interrupção na mudança nos pinos B4 a B71 – Habilita a interrupção 0 – Desabilita a interrupção
Bit 4 – Habilita interrupção no pino INT/RB01 – Habilita a interrupção 0 – Desabilita a interrupção
19/2/2008 99
Microcontrolador PIC
Interrupções - RegistradoresRegistrador INTCONBit 5 – Habilita interrupção de Overflow do Timer 01 – Habilita interrupção0 – Desabilita interrupção
Bit 6 – Habilita interrupção dos periféricos1 – Habilita todas as interrupções não mascaradas de periféricos0 – Desabilita todas as interrupções de periféricos
Bit 7 – Habilita interrupção global1 – Habilita todas as interrupções não mascaradas0 – Desabilita todas as interrupções
19/2/2008 100
Microcontrolador PIC
Interrupções - RegistradoresRegistrador PIE1
Bit 0 – Habilita interrupção de Overflow do Timer11 – Habilita interrupção0 – Desabilita interrupção
Bit 1 – Habilita interrupção por igualdade do TMR2 e PR21 – Habilita interrupção 0 – Desabilita interrupção
19/2/2008 101
Microcontrolador PIC
Interrupções - RegistradoresRegistrador PIE1Bit 2 – Habilita interrupção do bloco CCP11 - Habilita interrupção0 – Desabilita interrupção
Bit 3 – Habilita interrupção da SPI1 – Habilita interrupção0 – Desabilita interrupção
Bit 4 – Habilita interrupção de transmissão da USART1 – Habilita interrupção0 – Desabilita interrupção
19/2/2008 102
Microcontrolador PIC
Interrupções - RegistradoresRegistrador PIE1Bit 5 – Habilita interrupção de recepção da USART1 – Habilita interrupção0 – Desabilita interrupção
Bit 6 – Habilita interrupção do conversor A/D1 - Habilita interrupção0 – Desabilita interrupção
Bit 7 – Habilita interrupção da porta paralela escrava1 – Habilita interrupção0 – Desabilita interrupção
19/2/2008 103
Microcontrolador PIC
Interrupções - RegistradoresRegistrador PIR1
Registrador PIE2
Registrador PIR2
19/2/2008 104
Microcontrolador PIC
Interrupções - Circuito
19/2/2008 105
Microcontrolador PIC
Configuração Timer 0, 1, 2 e Watch-Dog
19/2/2008 106
Microcontrolador PIC
Registrador Option
bits 0 a 2 PS0, PS1, PS2 (bits de seleção do divisor Prescaler) - Estes três bits definem o fator de divisão do prescaler.
19/2/2008 107
Microcontrolador PIC
Registrador Option
bit 3 PSA (Bit de Atribuição do Prescaler) – Atribuição do prescaler.1 = prescaler atribuído ao watchdog;0 = prescaler atribuído ao temporizador TMR0.
19/2/2008 108
Microcontrolador PIC
Registrador Option
19/2/2008 109
Microcontrolador PIC
Registrador Optionbit 4 T0SE (bit de seleção de borda ativa em TMR0) –Sinal através do pino RA4/TOCK1.1 = borda de descida;0 = borda de subida.
bit 5 TOCS (bit de seleção 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 seleção da borda de interrupção)– Interrupção através do pino RB0/INT.1 = borda de subida;0 = borda de descida.
bit 7 RBPU (Habilitação dos pull-up nos bits da porta B)1 = resistências de “pull-up” desligadas;0 = resistências de “pull-up” ligadas.
19/2/2008 111
Microcontrolador PIC
Registrador OptionSETUP_TIMER_0()Sintax: setup_timer_0 ( mode)
Parâmetros: “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 operação é determinado pelo bit de seleção de clock, TMR1CS (bit 1 do Reg. T1CON).
Bit 0 (bit TMR1ON – bit de ativação 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 sincronização do clock externo)
TMR1CS =11 = Não sincroniza sinal de clock externo 0 = Sincroniza sinal de clock externo.
TMR1CS =0Não tem efeito
19/2/2008 114
Microcontrolador PIC
Timer 1Bit 3 (bit T1OSCEN– bit de habilitação do oscilador interno do Timer 1) configura-se o PIC para operar com oscilador interno. O mesmo gera um sinal com uma freqüência de ≈ 200KHz (a 4MHz a depender do PIC). 1 = oscilador habilitado0 = oscilador desligado (elimina consumo de energia)
Bits 5-4 (bits de seleção 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 não usados – lidos como 0)
19/2/2008 116
Microcontrolador PIC
Timer 2# Timer de 8 bits com um pré-escalonador e pós-escalonador. # Pode ser usado como a base de tempo no modo PWM dos módulos 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 seleção do pré-escalonador) 00 = Escalonamento de 101 = Escalonamento de 41x = Escalonamento de 16
Registrador de Controle do Timer 2 – T2CON (endereço 12h)
19/2/2008 118
Microcontrolador PIC
Timer 2Bit 2 (bit TMR2ON – bit de ativação do Timer 2).1 = Timer 2 ativado0 = Timer 2 desativado;
Bits 6-3 (bits TOUTPS3:TOUTPS0 – bits de seleção do pós-escalonador) –
0000 = Escalonamento de 10001 = Escalonamento de 20010 = Escalonamento de 3
•••
1110 = Escalonamento de 151111 = Escalonamento de 16
19/2/2008 119
Microcontrolador PIC
Instruções associadas aos temporizadoresSintax: set_timer0(value) or set_rtcc (value)
set_timer1(value)set_timer2(value)
Parâmetros: Timer 1 - 16 bit int.Timers 0 e 2 - 8 bit int.
Função: 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
Instruções 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()
Parâmetros: NenhumRetorna: Timers 1 - 16 bit int.
Timers 0 e 2 - 8 bit int.
Função: Returna o valor de contagem do timerExemplo: set_timer0(0);
while ( get_timer0() < 200 ) ;
19/2/2008 121
Microcontrolador PIC
Configuração 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 conversão (ADRESH);
Registrador do byte menos significado do resultado da conversão (ADRESL);
Registrador de controle 0 (ADCON0);Registrador de controle 1. (ADCON1).
Quando a conversão é concluída, o resultado écarregado em ADRES, o bit GO/DONE (bit 2 do Reg. ADCON0) é resetado e o flag de interrupção, bit ADIF, ésetado.
19/2/2008 124
Microcontrolador PIC
CONVERSOR A/DO conversor A/D necessita de no mínimo 12 TAD para
realizar uma conversão 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 conversão correta, o clock do conversor A/D deve ser selecionado para garantir um TAD mínimo de 1.6µs.
19/2/2008 125
Microcontrolador PIC
CONVERSOR A/DTAD x Máxima freqüência de conversão
19/2/2008 126
Microcontrolador PIC
CONVERSOR A/DJustificação do resultado da conversão A/D
19/2/2008 127
Microcontrolador PIC
CONVERSOR A/DRegistrador ADCON0 - Controla a operação do módulo
A/D (endereço 1Fh).
Bit 0 (bit ADON – bit que ativa o conversor A/D) – Este bit ativa a operação do conversor A/D.
1 = conversor A/D ativado0 = conversor A/D desligadoBit 1 (bit não usado – lido como 0)
19/2/2008 128
Microcontrolador PIC
CONVERSOR A/DBit 2 (bit GO/– bit de status de conversão) – Este bit
indica se uma conversão iniciada já foi concluída.Se ADON =11 = conversão A/D em andamento0 = não há conversão A/D em andamento (esse bit é
automaticamente resetado quando a conversão A/D éconcluída).
Bits 5-3 (bits CHS2:CHS0 – bits de seleção de canal)– Estes bits selecionam a entrada analógica 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 seleção 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 função dos pinos das
portas (A e E) (endereço 9Fh)
Bits 3-0 (bits PCFG3:PCFG0 – bits de controle de configuração dos pinos A/D) – Este bits configuram os pinos analógicos 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 não usados – lido como 0)
Bit 7 (bit ADFM – bit de seleção de formato do resultado da conversão A/D) – Este bit seleciona o formato de justificação do resultado gerado pelo conversor A/D.
1 = Justificação à direita. Os 6 bits mais significativos de ADRESH serão iguais a 0.
0 = Justificação à esquerda. Os 6 bits menos significativos de ADRESL serão iguais a 0.
19/2/2008 133
Microcontrolador PIC
Instruções associadas ao Conversor A/DSintax: setup_adc ( mode);
Parâmetro: mode – Modo analógico para digital. As opções válidas variam entre dispositivos. Opções típicas:• ADC_OFF• ADC_CLOCK_INTERNAL• ADC_CLOCK_DIV_32
Função: 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
Instruções associadas ao Conversor A/DSintax: set_adc_channel ( chan)
Parâmetro: chan é o número do canal selecionado. Os números iniciam em 0 (AN0) e seguem de acordo com o número de canais disponíveis (ver datasheet do dispositivo).
Função: Especifica o canal a ser convertido no próximo READ_ADC. Deve ser respeitado um tempo de amostragem antes de iniciar uma conversão após uma mudança de canal. Em geral 10us é suficiente
Exemplos: set_adc_channel(2);delay_us(10);value = read_adc();
19/2/2008 135
Microcontrolador PIC
Captura/Comparação/PWMOs módulos CCP (Captura/Comparação/PWM) são formados por um registrador de 16 bits que pode operar como:
Registrador de captura de 16 bits;Registrador de comparação de 16 bitsRegistrador de “duty-cycle” no modo PWM
Mestre/Escravo.
19/2/2008 136
Microcontrolador PIC
Captura/Comparação/PWMModo de operação do módulo CCP e recursos de Timer necessários
Interação entre os módulos CCP
19/2/2008 137
Microcontrolador PIC
Configuração Bloco Capture/Compare/PWM
19/2/2008 138
Microcontrolador PIC
Captura/Comparação/PWMRegistradores de Controle CCP1CON e CCP2CON (endereços 17h e 1Dh)
Bits 3-0 (bit CCPxM3: CCPxM0 – bits de seleção de modo de operação) – Estes bits selecionam o modo como operarão os blocos CCP1 e CCP2.0000 = Modos Captura/Comparação/PWM desligados (reseta módulo CCPx )
19/2/2008 139
Microcontrolador PIC
Captura/Comparação/PWM0100 = Modo captura, a cada 1 transição negativa (1→0)0101 = Modo captura, a cada 1 transição positiva (0→1)0110 = Modo captura, a cada 4 transições positivas (1→0)0111 = Modo captura, a cada 16 transições positivas (1→0)1000 = Modo comparação, seta pino de saída (bit CCPxIF é setado)1001 = Modo comparação, reseta pino de saída (bit CCPxIF é setado)1010 = Modo comparação, gera interrupção (bit CCPxIF é setado, pino CCPx não é afetado)
19/2/2008 140
Microcontrolador PIC
Captura/Comparação/PWM1011 = Modo comparação, ativa “Special Event trigger”(bit CCPxIF é seta, pino CCPx não é afetado); CCP1 reseta TMR1; CCP2 reseta TMR1 e inicia uma conversão A/D (se módulo 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: Não usadoModo Comparação: Não usadoModo PWM: Dois bits LSB do duty-cycle do sinal PWM. Os oito MSB’s são gravados no registrador CCPRxL.
19/2/2008 141
Microcontrolador PIC
Captura/Comparação/PWMModo Captura
19/2/2008 142
Microcontrolador PIC
Captura/Comparação/PWMModo Comparação
19/2/2008 143
Microcontrolador PIC
Captura/Comparação/PWMModo PWMO bloco CCPx produz um sinal PWM com uma resolução de até 10 bits.
Um sinal PWM é caracterizado pelo seu período e o “duty-cycle”, que corresponde ao tempo em que o sinal permanece em nível alto.
O período do sinal PWM é especificado pelo registrador PR2: Período PWM = [(PR2) + 1] • 4 • TOSC • (TMR2 prescale value).
19/2/2008 144
Microcontrolador PIC
Captura/Comparação/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 não 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/Comparação/PWMModo PWMDeterminação do duty-cycle em termos de tempo:Duty Cycle do PWM = (CCPR1L:CCP1CON<5:4>) •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 período PWM).
No modo PWM CCPR1H é um registrador apenas de leitura.
19/2/2008 146
Microcontrolador PIC
Captura/Comparação/PWMModo PWM
19/2/2008 147
Microcontrolador PIC
InterrupçõesMecanismo que torna possível responder a “estímulos”
externos ou internos.Através do registrador INTCOM pode-se habilitar as
interrupções de forma individual ou de forma global.
O PIC 16F87X tem as seguintes fontes de Interrupção:Interrupção externa (RB0/INT); Interrupção de Relógio (TM0);Interrupção da porta B (B4-B7);Interrupção por captura e comparação (CCP1 e 2);Interrupção da USART (buffer saída e entrada cheio);Interrupção CCP;
–
19/2/2008 148
Microcontrolador PIC
Configuração Porta Serial
19/2/2008 149
Microcontrolador PIC
InterrupçõesO PIC 16F87X tem as seguintes fontes de Interrupção:
Estouro do relógio TMR1;Estouro do relógio TMR2;Fim de escrita EEPROM;Fim de Conversão A/D;Atividade na SPI ou I2C;Recebimento de dados na Porta Paralela Escrava;Colisão no barramento.
–
19/2/2008 150
Microcontrolador PIC
Interrupções - Circuito
19/2/2008 151
Microcontrolador PIC
InterrupçõesInicialmente deve-se estabelecer quais interrupções
devem estar habilitadas bem como setar o bit GIE (reg INTCON<7>)
Comandos de retorno da interrupção:RETURN;RETLW;RETFIE (põe ‘1’ automaticamento no bit GIE,
permitindo novas interrupções).
19/2/2008 152
Microcontrolador PIC
Interrupções - RegistradoresRegistrador INTCON
Bit 0 – Flag interrupção de mudança nos bits B4 a B71 – Pelo menos um bit mudou de estado0 – Nenhum bit mudou de estado
Bit 1 – Flag interrupção INT/RB01 – Interrupção externa ocorreu0 – Não ocorreu interrupção externa
19/2/2008 153
Microcontrolador PIC
Interrupções - RegistradoresRegistrador INTCON
Bit 2 – Flag Timer 0 overflow1 – Contagem mudou de 00h para FFh0 – Não ocorreu overflow na contagem
Bit 3 – Habilita interrupção na mudança nos pinos B4 a B71 – Habilita a interrupção 0 – Desabilita a interrupção
Bit 4 – Habilita interrupção no pino INT/RB01 – Habilita a interrupção 0 – Desabilita a interrupção
19/2/2008 154
Microcontrolador PIC
Interrupções - RegistradoresRegistrador INTCONBit 5 – Habilita interrupção de Overflow do Timer 01 – Habilita interrupção0 – Desabilita interrupção
Bit 6 – Habilita interrupção dos periféricos1 – Habilita todas as interrupções não mascaradas de periféricos0 – Desabilita todas as interrupções de periféricos
Bit 7 – Habilita interrupção global1 – Habilita todas as interrupções não mascaradas0 – Desabilita todas as interrupções
19/2/2008 155
Microcontrolador PIC
Interrupções - RegistradoresRegistrador PIE1
Bit 0 – Habilita interrupção de Overflow do Timer11 – Habilita interrupção0 – Desabilita interrupção
Bit 1 – Habilita interrupção por igualdade do TMR2 e PR21 – Habilita interrupção 0 – Desabilita interrupção
19/2/2008 156
Microcontrolador PIC
Interrupções - RegistradoresRegistrador PIE1Bit 2 – Habilita interrupção do bloco CCP11 - Habilita interrupção0 – Desabilita interrupção
Bit 3 – Habilita interrupção da SPI1 – Habilita interrupção0 – Desabilita interrupção
Bit 4 – Habilita interrupção de transmissão da USART1 – Habilita interrupção0 – Desabilita interrupção
19/2/2008 157
Microcontrolador PIC
Interrupções - RegistradoresRegistrador PIE1Bit 5 – Habilita interrupção de recepção da USART1 – Habilita interrupção0 – Desabilita interrupção
Bit 6 – Habilita interrupção do conversor A/D1 - Habilita interrupção0 – Desabilita interrupção
Bit 7 – Habilita interrupção da porta paralela escrava1 – Habilita interrupção0 – Desabilita interrupção
19/2/2008 158
Microcontrolador PIC
Interrupções - RegistradoresRegistrador PIR1
Registrador PIE2
Registrador PIR2