Escolar Documentos
Profissional Documentos
Cultura Documentos
1. INTERRUPÇÕES
2. ACESSO À MEMÓRIA
3. CLOCK
4. RESET
5. TEMPORIZAÇÃO
Parte 3 6. WDT
RECURSOS 7. TIMER 0
8. TIMER 1
9. TIMER 2
25/04/2017 1 25/04/2017 2
1 INTERRUPÇÕES 1 INTERRUPÇÕES
Definição
25/04/2017 3 25/04/2017 4
1 INTERRUPÇÕES 1 INTERRUPÇÕES
Flags de interrupção Interrupção externa – INT
• Avisam que uma solicitação de interrupção foi • Um pino para interrupção externa.
realizada, ainda que o pedido não seja atendido. • O pino deve ser configurado como entrada.
• A mudança de 0 para 1 é feita automaticamente • Configurar TRISB<0>=1 (BSF TRISA,RB0).
na ocorrência de um evento determinado. • Pino com efeito shimitt trigger.
INT
• 0: Não houve o evento (reset default). • O ST protege a entrada contra oscilações de
• 1: Houve o evento. alta frequência.
• Não é permitido fazer BSF REG,interrupt_flag.
• A mudança de 1 para 0 é feita pelo programa
em execução.
• A mudança de 1 para 0 deve ser feita para que
uma nova solicitação possa ser identificada.
25/04/2017
• A mudança é feita por BCF REG,interrupt_flag. 5 25/04/2017 6
1
25/04/2017
1 INTERRUPÇÕES 1 INTERRUPÇÕES
Interrupção externa – INT Interrupção por mudança em PORT B
• Para configurar a interrupção externa, é preciso
programar o registrador OPTION_REG (081h, 181h). Interrupt-
on-change
• OPTION_REG<6>, <INTEDG>
• INTEDG: Interrupt Edge Select bit.
• 0: Interrupção na borda de descida. Interrupt-
on-change
INT
1 INTERRUPÇÕES 1 INTERRUPÇÕES
Interrupção por mudança em PORT B Interrupção por mudança em PORT B
Rotina de interrupção
• Exemplo de programa que identifica
uma borda de subida em RB.
• Os quatro bits de PORTB geradores de interrupção por
• Mais de um bit podem sofrer a
mudança podem ser usados como interrupções externas. borda ao mesmo tempo.
• Sua limitação, porém, é que o pedido é o mesmo para os
• A ordem por meio da qual os quatro
quatro pinos.
bits são checados determina a
• Qualquer mudança no nibble gera a interrupção. prioridade dos bits. Rotina de
CLRF PORTB BTFSC
GOTO
PORTB,RB4
INTRB4
identificação
BTFSC PORTB,RB5
. BTFSC
GOTO
PORTB,RB6
INTRB6
do bit
BTFSC PORTB,RB7
GOTO INTRB7
. .
que o programa verifique os quatro bits dentro de PORTB BTFSC PORTB,RB4 GOTO
.
GOTO INTRB5
BTFSC PORTB,RB6
GOTO INTRB6
BTFSC PORTB,RB7
GOTO INTRB7
25/04/2017 9 25/04/2017 . 10
.
1 INTERRUPÇÕES 1 INTERRUPÇÕES
Pulso nos pinos INTCON
INTCON
• Um pulso no pino INT ou em PORTB não
• Registrador 000001011b, 00Bh, banco 0
pode ser muito estreito.
• Registrador 010001011b, 08Bh, banco 1
• Em um pulso muito estreito, a largura
pode não ser percebida pelos TCY’s.
• Registrador 100001011b, 10Bh, banco 2
• É necessário que essa mudança seja
• Registrador 110001011b, 18Bh, banco 3
percebida entre um TCY e o próximo. • Registrador XX0001011b
25/04/2017 11 25/04/2017 12
2
25/04/2017
1 INTERRUPÇÕES 1 INTERRUPÇÕES
INTCON INTCON
25/04/2017 13 25/04/2017 14
1 INTERRUPÇÕES 1 INTERRUPÇÕES
INTCON INTCON
25/04/2017 15 25/04/2017 16
1 INTERRUPÇÕES 1 INTERRUPÇÕES
Peripheral Interrupt Outras interrupções
VEREMOS
• INTF, INTE INT External Interrupt • PSPIF, PSPIE Parallel Slave Port Read/Write
VEREMOS
3
25/04/2017
1 INTERRUPÇÕES 1 INTERRUPÇÕES
EEIF
PSPIF
ADIF
Interrupções gerais Envio do pedido de interrupção
TMR1IF
TMR2IF
CCP1IF
CCP2IF
RCIF Outras
TXIF interrupções
SSPIF
BCLIF
Peripheral
Interrupt
25/04/2017 19 25/04/2017 20
1 INTERRUPÇÕES 1 INTERRUPÇÕES
Registradores Registradores
• INTCON Interrupt Control register
• PIR1 Peripheral Interrupt Flag register 1 INTCON
• PIR2 Peripheral Interrupt Flag register 1
• PIE1 Peripheral Interrupt Enable register 2
• PIE2 Peripheral Interrupt Enable register 2 PIR1
• INTCON XX0001011b
• PIR1 000001100b, 00Ch, banco 0 PIE1
• PIR2 000001101b, 00Dh, banco 0
PIR2
• PIE1 010001100b, 08Ch, banco 1
• PIE2 010001101b, 08Dh, banco 1 PIE2
25/04/2017 21 25/04/2017 22
1 INTERRUPÇÕES 1 INTERRUPÇÕES
Efeito da interrupção Efeito da interrupção
• Em computação, fontes diferentes de interrupção levam a • Uma solicitação de interrupção não é atendida se ela
execução para diferentes sub-rotinas. está desabilitada.
• Na PIC, todas as fontes levam para a mesma sub-rotina. • O atendimento de uma interrupção corresponde à
execução da rotina de interrupção.
• Quando esta rotina é executada, não há distinção
sobre qual interrupção foi atendida.
• Se necessário, a rotina deve verificar os flag’s de
interrupção para descobrir qual solicitação foi atendida.
• Após a execução da rotina de interrupção, o programa
deve retornar para o ponto onde estava antes do
atendimento da interrupção (PC+1).
• Para que este endereço seja recuperado, é preciso
25/04/2017 23 armazená-lo na pilha.
25/04/2017 24
4
25/04/2017
1 INTERRUPÇÕES 1 INTERRUPÇÕES
Efeito da interrupção Overflow da pilha
• Se a pilha está lotada na ocasião do atendimento
• A mudança da posição do ponteiro de programa para a da interrupção, ocorre um stack overflow.
rotina de interrupção ocorre da mesma forma que na • Quando se usa interrupções, o programa
instrução CALL. principal deve usar, no máximo, sete níveis da
• O endereço dessa rotina é o interrupt vector (0004h). pilha, deixando um nível reservado para o desvio
• A pilha sofre um PUSH (TOS PC+1). provocado pela interrupção.
• PC interrupt vector address. • Se a rotina de interrupção emprega a instrução
• A última instrução da rotina é RETFIE. CALL, então devem ser reservados dois níveis
na pilha para a interrupção, restando seis níveis
• A pilha sofre um POP (PC TOS).
para o programa principal.
• Se a instrução CALL é usada várias vezes
cumulativamente, o espaço reservado na pilha
25/04/2017 25
deve ser planejado convenientemente.
25/04/2017 26
1 INTERRUPÇÕES 1 INTERRUPÇÕES
Efeito da interrupção Efeito da interrupção
• A execução da rotina de interrupção requer um push. Programa
Rotina de interrupção
• Um atendimento a uma solicitação de interrupção
durante a execução da rotina de interrupção aumenta
a chance de ocorrência do stack overflow.
• Como há, apenas, uma rotina de interrupção, o Instante no
atendimento de uma solicitação durante o atendimento qual ocorre a
de outra gera comportamento imprevisível. solicitação de
interrupção
• Para resolver esse problema, o atendimento a uma
interrupção é iniciado pela desabilitação automática
das interrupções (GIE = 0).
RETFIE
• O comando RETFIE habilita, automaticamente, as
interrupções (GIE = 1).
25/04/2017 27 25/04/2017 28
1 INTERRUPÇÕES 1 INTERRUPÇÕES
Efeito da interrupção Efeito da interrupção
• A rotina de interrupção pode ser escrita a partir da
• O programa mais curto possível para uma rotina chamada posição do interrupt vector.
por CALL é formado, apelas, pelo comando RETURN.
• O programa principal, chamado pelo rótulo “Início”,
• O programa mais curto possível para a rotina de vem logo atrás.
interrupção é formado, apelas, pelo comando RETFIE.
• O comando “GOTO Início” se encarrega de definir o
• Esta é uma forma de eliminar o efeito das interrupções, a endereço real do programa principal.
não ser pelos TCY’s gastos nos desvios.
• Outra opção é, no endereço do interrupt vector, usar o
0000 2805 GOTO 0x5 comando “GOTO Rotina_Interrupção”.
#include <p16f877.inc>
0001 3FFF #include <p16f877.inc>
org 0x0 ;Vetor de Reset
0002 3FFF org 0x00 ;Vetor de Reset
GOTO Início ;Chamada da Rotina Início
0003 3FFF GOTO Início ;Chamada da Rotina Início
org 0x4 ;Vetor de Interrupção
org 0x04 ;Vetor de Interrupção
RETFIE ;Término da Interrupção 0004 0009 RETFIE
GOTO InicInt ;Chamada da Rotina InicInt
0005 1283 BCF 0x3, 0x5
Início 0006 1303 BCF 0x3, 0x6 Início
BCF STATUS,RP0 ;Programa principal
BCF STATUS,RP0
BCF STATUS,RP1 ;Programa principal
BCF STATUS,RP1
end
25/04/2017 29 25/04/2017 30
.
.
5
25/04/2017
1 INTERRUPÇÕES 1 INTERRUPÇÕES
T0IF EEIF
Rotina seletiva para interrupção INTIF
RBIF
Rotina seletiva para interrupção PSPIF
ADIF
TMR1IF
• A rotina de interrupção é uma só, porém a solicitação de TMR2IF
interrupção pode ter catorze eventos de origem diferentes. • Somente um evento é atendido por vez. CCP1IF
CCP2IF
• Pode ser que a rotina precise ser diferente para os • Somente um interrupt flag vale “1”. RCIF
TXIF
diversos eventos que podem solicitar interrupção. • Se mais de um interrupt flag vale “1”, o SSPIF
BCLIF
• É necessário identificar a origem. programa está errado e não há como
• Para isso, é preciso buscar qual interrupt flag vale “1”. identificar o último evento.
• É usado o comando BTFSC. • Para evitar este erro, sempre que uma
• Na sequência, é feito um GOTO com o endereço da sub- interrupção é atendida, o seu respectivo
rotina específica da origem selecionada. interrupt flag deve ser configurado para “0”.
• Para cada origem considerada, há uma sub-rotina. • Usar as instruções BCF ou CLRF.
• Somente um evento é atendido por vez
•25/04/2017
Cada sub-rotina termina com RETFIE. 31 25/04/2017 32
1 INTERRUPÇÕES 1 INTERRUPÇÕES
T0IF EEIF
INTIF
RBIF
Interrupt flag PSPIF
ADIF
Rotina de identificação do evento
TMR1IF
TMR2IF INTCON
CCP1IF PIR1
CCP2IF
RCIF PIR2
TXIF
IF SSPIF
BCLIF
.
1 .
BTFSC INTCON,T0IF
GOTO INTTO
BTFSC INTCON,INTF
GOTO INTINTF
BTFSC INTCON,RBIF
0 t GOTO INTRB
BTFSC PIR1,PSPIF
GOTO INTPSP
.
.
25/04/2017 33 25/04/2017 34
1 INTERRUPÇÕES 1 INTERRUPÇÕES
Seleção de eventos – Opção 1 Seleção de eventos – Opção 2
Rotina de interrupção Rotina de interrupção
Programa Programa
.
.
BTFSC INTCON,T0IF
GOTO INTTO
BTFSC INTCON,INTF
GOTO INTINTF
BTFSC INTCON,RBIF
GOTO INTRB
BTFSC
GOTO
PIR1,PSPIF
INTPSP
Rotina de
.
.
identificação
GOTO do evento
Rotina de
identificação
do evento
GOTO
GOTO
RETFIE 36
25/04/2017 35 25/04/2017 RETFIE
6
25/04/2017
25/04/2017 37 25/04/2017 38
7
25/04/2017
7 0 7 0 7 0 7 0
13 8 12 8
8
25/04/2017
8-bit
8-bit
8-bit
RD
WR
EECON1 WREN EEDATA EEADR EECON1
EEPGD
5-bit
8-bit
8-bit
6-bit
9
25/04/2017
25/04/2017 55 25/04/2017 56
25/04/2017 57 25/04/2017 58
EEPGD
10
25/04/2017
25/04/2017 61 25/04/2017 62
0 t
25/04/2017 65 25/04/2017 66
0 t
11
25/04/2017
25/04/2017 67 25/04/2017 68
12
25/04/2017
25/04/2017 77 25/04/2017 78
13
25/04/2017
Data out
Instruction Register 14-bit
EEDATA DEMUX
13
25/04/2017 ICD2 79 25/04/2017 80
3 CLOCK 3 CLOCK
Definição Definição
http://www.bemparana.com.br/craques-e-caneladas/wp-content/uploads/2011/10/Batuta_Maestro.jpg
http://www.batera.com.br/contents/estudos/apon0bn2.jpg
• O clock não pode ser tão alto ao ponto do • A frequência deve ser constante no tempo.
chip falhar ou estragar, nem tão baixo ao
ponto do WDT estourar.
25/04/2017 81 25/04/2017 82
3 CLOCK 3 CLOCK
Pinagem Pinagem
25/04/2017 83 25/04/2017 84
14
25/04/2017
3 CLOCK 3 CLOCK
Origem da oscilação Oscilador de relaxação
• RC: Oscilador de relaxação. Requer dispositivo • Relaxação: Causa (tal como isolação, iluminação, etc).
semicondutor para realizar a comutação carga/descarga. • Relaxamento: Consequência (tal como isolamento,
• XTAL ou XT (cristal): Usado em circuito semelhante ao iluminamento, etc).
oscilador de relaxação, porém a frequência é • Oscilador de relaxação é aquele onde o relaxamento
determinada pelo cristal. ou estabilização de um armazenador de energia serve
como disparo para uma comutação.
• A estabilização pode ser de carga ou de descarga.
• Em eletricidade, se usa o capacitor, mas poderia ser
uma mola, em sistemas mecânicos.
25/04/2017 85 25/04/2017 86
http://www.electronicecircuits.com/wp-content/uploads/2009/12/crystal-tester-XTal-Tester.jpg
3 CLOCK 3 CLOCK
Configuração Oscilador
• Bits 1 e 0 do Configuration Word. • RC: Forma mais barata de geração da oscilação.
• Mnemônicos: FOSC1 e FOSC0. Oscilador com grande imprecisão e variação na
• Outros modelos mid-range também possuem o bit FOSC2. frequência. É o modo padrão.
• A família mid-range possui até 8 diferentes configurações. • HS: Indicado para aplicações em alta frequência. É
• Na PIC16F877 há, somente, quatro opções. modo de operação que mais consome energia na
geração da oscilação e no funcionamento do chip.
FOSC2 FOSC1 FOSC0 Oscilador Significado
• LP: Indicado para aplicações que requeiram baixo
consumo de energia e a frequência de operação possa
PIC16F877
0 1 1 RC Resistor / Capacitor
0 1 0 HS High Speed Crystal / Resonator ser baixa. O consumo é inferior do que o do modo RC.
0 0 1 XT Crystal / Resonator
0 0 0 LP Low Power Crystal • XT: Modo intermediário entre HS e LP.
1 1 1 EXTRC Resistor / Capacitor • Originalmente, havia, apenas, os modos RC e XT.
1 1 0 EXTRC Resistor / Capacitor
1 0 1 INTRC Resistor / Capacitor interno
25/04/2017 1 0 0 INTRC Resistor / Capacitor interno87 25/04/2017 88
3 CLOCK 3 CLOCK
Oscilador Nomenclatura dos pinos
25/04/2017 89 25/04/2017 90
15
25/04/2017
3 CLOCK 3 CLOCK
Oscilador RC Oscilador RC
Circuito RC série
• Aplicações que não requeiram boa precisão na oscilação:
Carga Descarga
• Brinquedos.
• Painéis de exibição de informações. – VS + t=0 t=0
• Controle em malha aberta.
• Controle proporcional.
• São aplicações que não fazem comunicação com outros
sistemas microprocessados. I I
• São aplicações de baixo custo.
• Essas aplicações podem usar clock por meio de RC.
• Alguns modelos da família mid-range possuem RC
interno, mas não é o caso da PIC16F877.
– VR + – VC + + VR – – VC +
25/04/2017 91 25/04/2017 VC0=0V VC0>0V 92
3 CLOCK 3 CLOCK
Oscilador RC Oscilador RC
Carga Descarga
carga
– VS +
descarga
– VC +
25/04/2017 93 25/04/2017 94
3 CLOCK 3 CLOCK
Oscilador RC Oscilador RC
Circuito RC série Circuito RC série
16
25/04/2017
3 CLOCK 3 CLOCK
Oscilador RC Oscilador RC
Circuito RC série
• Um semicondutor (chave de estado sólido) (não
mostrado) faz a comutação entre carga e descarga.
• Fatores aleatórios que afetam a frequência:
• O produto RC é chamado de constante de tempo ().
• Temperatura – A resistividade elétrica () e a
• é medido em segundos ([][F]=[s]).
permissividade elétrica () dependem da
temperatura. • Se for muito menor do que o período de oscilação,
a onda é, aproximadamente, quadrada.
• Valores de resistência elétrica (R) e capacitância
elétrica (C) diferentes do especificado, mas dentro • Se for muito maior do que o período de oscilação, a
da faixa de tolerância. onda é, aproximadamente, triangular.
• Variação na fonte de alimentação. • Para o clock, é desejável uma onda quadrada.
Grande amplitude Pequena amplitude
Baixa frequência Alta frequência
25/04/2017 97 25/04/2017 98
3 CLOCK 3 CLOCK
Oscilador RC Oscilador RC
• Se for muito menor do que o período de oscilação, a onda é,
aproximadamente, quadrada. • É preciso converter a onda
• Esse não é um bom método para obtenção de onda quadrada triangular em uma onda quadrada.
porque a comutação entre carga e descarga é feita em um • Isso pode ser feito por meio de
momento onde a tensão varia muito pouco (derivada pequena). uma porta lógica com histerese.
• Se a tensão varia pouco, o momento da comutação está
vulnerável a pequenas interferências, diminuindo a precisão da
frequência de oscilação.
Onda triangular Onda quadrada
• Jamais uma comutação deve ser feita em um ponto de
operação da função temporal onde a derivada seja quase zero.
• Esta onda não é adequada para uso como clock.
3 CLOCK 3 CLOCK
Circuito ST – Schimitt Trigger Glitch filter
• O circuito ST emprega o efeito de histerese. • Circuito que tem, como principal função, o exercício de
• Histerese é obtida por uma realimentação positiva interna. uma histerese analógica ou digital.
• Trata-se da diferença entre o caminho de ida e o de volta • Esta histerese age como um filtro passa-baixas.
entre dois estados estáveis. • Na versão analógica, este filtro é obtido por um ST.
• A transição do estado baixo para o alto ocorre em um • Na versão digital, este filtro é obtido por um temporizador.
valor de entrada inferior àquele que realiza a transição de
alto para baixo.
• Em chaves elétricas, eletrônicas e digitais, isto impede
uma oscilação de alta frequência quando o valor de
entrada estiver próximo ao de limiar.
• Esta oscilação poderia provocar o aquecimento da chave,
o alto consumo de energia, a diminuição do da vida útil do
http://www.cypress.com/file/130886/download
dispositivo, sua queima e até mesmo um incêndio.
25/04/2017 101 25/04/2017 102
17
25/04/2017
3 CLOCK 3 CLOCK
Histerese analógica Histerese digital
Correta Invertida
http://upload.w ikimedia.org/wikipedia/commons/thumb/c/c7/B-H_loop.png/350px-B-H_loop.png t
Mínimo período
Máxima frequência de oscilação
3 CLOCK 3 CLOCK
Histerese digital Buffer
Mínimo período
Máxima frequência de oscilação
• Estágio de saída de toda porta lógica.
• O tempo mínimo para que a tensão • Lida com a saída da operação lógica.
de entrada varie entre a tensão de • Responsável por quatro funções:
VOUT limiar de subida (Rise Voltage –
VH • Ajuste dos níveis de tensão.
VR) e a tensão de entrada de limiar
de descida (Fall Voltage – VF) é o • Amplificação de corrente.
negativa
positiva
Borda
Borda
3 CLOCK 3 CLOCK
VIN Buffer ST VIN VOUT Histerese digital
VOUT
Buffer ST NOT ST
VIN
VOUT Exemplos
18
25/04/2017
3 CLOCK 3 CLOCK
Histerese digital Oscilador RC
3 CLOCK 3 CLOCK
Oscilador RC Oscilador RC
1 0 VOUT 1 1 VOUT
4093 1 0
Descarga
Carga
Onda triangular I I
Onda quadrada
http://www.national.com/ds/CD/CD4093BC.pdf
3 CLOCK 3 CLOCK
Oscilador RC com controle de Dutty-Cycle Oscilador RC com controle de Dutty-Cycle
Carga do capacitor Descarga do capacitor
1 0
4093
1
0
Chave analógica
http://www.eletronic a.org/arq_apostilas/apostila_pwm.pdf
http://www.eletronica.org/arq_apostilas/apostila_pwm.pdf
25/04/2017 113 25/04/2017 114
19
25/04/2017
3 CLOCK 3 CLOCK
RC RC
Oscilador externo Oscilador externo
3 CLOCK 3 CLOCK
RC RC
Oscilador externo Oscilador externo
• O capacitor descarregado começa a carregar-se.
• O MOSFET de canal N está desligado. • A histerese do buffer schimit trigger
• A tensão na entrada do buffer schimit trigger começa serve para evitar a formação de
D
a aumentar. uma onda de alta frequência e
pequena amplitude. G
• O buffer passa de nível 0 para nível 1. S
• A histerese garante uma amplitude
• VGS passa para valor alto, acima de VTH.
aceitável na onda.
• O MOSFET liga.
• Na descarga, o MOSFET ligado
• O capacitor é descarregado sobre RDS. age como uma resistência ativa.
• O buffer passa de nível 1 para nível 0. • RDS age como resistor de descarga.
• VGS passa para 0V. D • Na carga, é usado o resistor
• O MOSFET desliga. G externo. Isto significa que o dutty-
S
• O25/04/2017
ciclo recomeça. 117 cycle pode ser diferente de 50%.
25/04/2017 118
3 CLOCK 3 CLOCK
RC RC
Oscilador interno Oscilador interno
• Ausente na PIC16F877.
• Não sofre ação do comando SLEEP.
• Permanece em oscilação no modo power down.
• Gera uma frequência de 4MHz em 25C.
• Um ajuste fino pode ser feito pelos bits OSCCAL<7:4>.
• Internal Oscilator Calibration bits: <CAL3:CAL0>
• 0000b: Mínima frequência.
• 1111b: Máxima frequência.
• Off-set de frequência superior: CALFST (fast).
• Off-set de frequência inferior: CALSLW (slow).
20
25/04/2017
3 CLOCK 3 CLOCK
LP/XT/HS LP/XT/HS
Oscilador interno Oscilador interno
3 CLOCK 3 CLOCK
LP/XT/HS LP/XT/HS
Oscilador interno Oscilador interno
Oscilador Frequência C1 C2
32kHz 33pF 33pF
LP
200kHz 15pF 15pF
47pF - 47pF -
200kHz
68pF 68pF
XT 1MHz
15pF 15pF
4MHz
15pF 15pF
4MHz 15pF 15pF
HS 8MHz 15-33pF 15-33pF
20MHz 15-33pF 15-33pF
3 CLOCK 3 CLOCK
LP/XT/HS LP/XT/HS Buffer normal
Oscilador interno Oscilador interno
Oscilador Ganho
LP Baixo Buffer 3S
XT Médio
HS Alto • O buffer tri-state assume saída em alta impedância
de acordo com o sinal de controle no terceiro pino.
• Os dois bufferes também realizam a função NOT.
• A diferença entre LP, XT e HS, no circuito interno, é o • O modo power down desliga o buffer tri-state.
ganho de corrente nos bufferes. • O desligamento do buffer gera economia de
• Nos modos mais lentos, o ganho é menor. energia e parada na oscilação.
•25/04/2017
Quanto maior é o ganho, maior é o consumo de energia.
125 25/04/2017 126
21
25/04/2017
3 CLOCK 3 CLOCK
LP/XT/HS LP/XT/HS – Iniciação
Oscilador interno Oscilador interno
3 CLOCK 3 CLOCK
LP/XT/HS LP/XT/HS
Oscilador externo Oscilador externo
Onda quadrada
MCU
1
MCU
• Este modo de operação é interessante 2
3 CLOCK 3 CLOCK
LP/XT/HS Bordas
Este slide não cai na prova.
OSC1
OSC1 OSC1
CLKOUT
22
25/04/2017
4 RESET 4 RESET
Definição
• Um P, MCU ou DSP encontra-se em estado de
reset quando, por algum motivo pré-determinado,
precisa parar de funcionar, permanecendo em
estado vegetativo até o término do estado de reset.
• Na ocasião do término do reset, o dispositivo volta
RESET a funcionar, sinalizando a ocorrência do reset, que
pode determinar diversas ações específicas.
• A discriminação dos diversos tipos de reset serve
para que o dispositivo tome medidas distintas para
cada um dos tipos e para que, por meio dos bits de
sinalização, o programa possa executar rotinas
específicas para cada um dos tipos.
25/04/2017 133 25/04/2017 134
4 RESET 4 RESET
Tipos Wake-up
1. MCLR reset durante o sleep.
1. Power-on reset (POR). 2. WDT reset durante o sleep.
2. MCLR reset durante operação normal. 3. Interrupt wake-up.
3. MCLR reset durante o sleep.
4. WDT reset durante operação normal. • São os tipos de reset ocorridos durante o power down (sleep).
5. WDT reset durante o sleep. • O wake-up tira a MCU do modo sleep.
6. Brown-out reset (BOR). • O PC retoma a posição onde estava anteriormente ao power
7. Parity Error reset (PER)*. down.
• No WDT wake-up e no interrupt wake-up, os registradores
mantém seus valores anteriores, exceto os bits indicativos do
reset e os bits de periféricos que não dormem. PCPC+1.
*Ausente na PIC16F877-20/P
• No MCLR wake-up, os registradores reiniciam. PC 0000h.
25/04/2017 135 25/04/2017 136
http://3.bp.blogspot.com/-HXWnUx9DHQ8/UF8165YCCWI/AAAAAAAAAUU/fRZH8bsIQBY/s1600/wakeuo.gif
4 RESET 4 RESET
Pinagem Pinagem
• VPP: Tensão de alimentação em programação.
• VPP > VDD.
• /MCLR: Master Clear input.
• Programação é a gravação da program memory através dos
• Compartilhado com a função VPP. protocolos permitidos.
• VPP: Tensão de alimentação em • Programação não é a gravação da program memory como se
programação. fosse um data memory através da execução do programa.
• O resistor é opcional. • O LVP dispensa o uso do VPP.
23
25/04/2017
4 RESET 4 RESET
Pinagem POR
• Power-on Reset.
• Ocorre na borda positiva aplicada aos pino /MCLR e VDD.
• Todos os tipos de reset ocorrem durante a execução ou para • É o tipo de reset mais forte.
iniciar a execução do programa. • O flag /POR é ativado (NOT_POR = 0).
• Programação do chip não pode ser feita durante a execução • O program counter aponta para o reset vector (0000h).
do programa.
• GPR’s, SFR’s e demais registradores são reiniciados.
• Por esse motivo, as funções /MCLR e VPP podem usar o
mesmo pino, jamais serão usadas ao mesmo tempo. POR
4 RESET 4 RESET
/MCLR BOR
• Brown-out Reset
• A alimentação é mantida.
• Ocorre em falha no provimento de energia elétrica ao chip.
• Os procedimentos de iniciação não são retomados.
• BOR faz o chip parar de funcionar em caso de falha elétrica.
• Ocorre na borda positiva aplicada aos pino /MCLR.
• O flag /POR não é ativado (NOT_POR = 1). • É uma segurança para evitar que ocorra erro na execução
do programa por falha na alimentação.
• O program counter aponta para o reset vector (0000h).
• Em alimentação pela rede elétrica, esse problema pode
• GPR’s, SFR’s e demais registradores são reiniciados. surgir devido a instabilidades na tensão da rede.
• Em alimentação por bateria, esse problema pode surgir na
queda da corrente em função de transitórios devidos a
outros circuitos ligados à mesma fonte de energia.
• O flag /BOR é ativado (NOT_BOR = 0).
• O program counter aponta para o reset vector (0000h).
25/04/2017 141 25/04/2017 142
• GPR’s, SFR’s e demais registradores são reiniciados.
4 RESET 4 RESET
POR/BOR POR/BOR
• O mínimo valor de VDD aceito é chamado de BVDD. • A distinção entre POR e BOR se deve ao quão baixa
• O chip entra em estado de reset quando VDD < BVDD. é a tensão de alimentação.
• O chip permanece em reset até que VDD > BVDD. • Se esta tensão está próxima de VSS , há um POR.
• Existe uma histerese, de modo que, para sair do BOR, • Se esta tensão está próxima de BVDD , há um BOR.
é preciso um pequeno incremento acima de BVDD.
• Esta histerese proposital age como um filtro passa- • O valor típico para VDD é de 5V.
baixas e evita que a PIC entre e saia do POR ou do
• Quando a tensão cai abaixo de
BOR em uma oscilação de alta frequência, o que
BVDD, o BOR é ativado.
poderia danificar o circuito.
• O valor típico para BVDD é de 4V.
• Esta oscilação pode ser decorrente de um defeito na
fonte de alimentação. • Quando a tensão cai abaixo de
1,2V, o POR é ativado.
25/04/2017 143 25/04/2017 144
24
25/04/2017
4 RESET 4 RESET
POR/BOR PWRT
• Power-up timer.
• Acionado com POR ou por BOR.
Power Control Register
• PCON 010001110b, 08Eh, banco 1 • Utiliza um par RC interno e de uso exclusivo.
• É um temporizador analógico.
• Duração típica de 72ms.
• Um valor zero indica que o respectivo reset ocorreu.
• Usado para dar tempo para todo os procedimentos
• Deve ser convertido para 1 manualmente. de reset serem aplicados.
• Não aceita BCF. • O valor do tempo depende de diversos parâmetros.
4 RESET 4 RESET
PWRT PWRT
• Quando VDD > BVDD e a histerese é vencida, há
um retardo de 72ms antes do chip voltar a operar. Histerese
• A temporização é do tipo RC e, por isso, a BVDD
Borda Borda
duração não é precisa. negativa positiva
• O circuito RC temporizador de 72ms é um filtro
passa-baixas de maior abrangência do que o
filtro da histerese e protege o resto do circuito. Disparo de PWRT
t
• A máxima frequência de oscilação permitida é Mínimo período
Máxima frequência de oscilação Mínimo período
dada por 1/72ms.
• A histerese é um filtro passa-baixas que protege o PWRT.
• A tensão mínima para o disparo do temporizador RC de
72ms de PWRT é um pouco superior a BVDD.
25/04/2017 147 25/04/2017 148
• BVDD é a tensão abaixo da qual o chip para de funcionar.
4 RESET 4 RESET
PWRT PWRT
Pino 32
25
25/04/2017
4 RESET 4 RESET
PWRT OST
• Oscillator Start-up Timer.
• Configurado por meio do configuration bit /PWRTE. • É um contador digital.
• Power-up Timer Enable bit. • Gera um atraso de 1024 ciclos do oscilador.
• 0: Habilitado. • Disparado pelo término do atraso gerado por PWRT.
• 1: Desabilitado (reset default). • Isso garante que a oscilação está estável.
• Independentemente de /PWRTE, PWRT está • Usado, apenas, nos modos XT, HC, LP e oscilador externo.
habilitado se BOR está habilitado. • Usado em POR, BOR e em wake-up.
• Brown-out Reset Enable bit.
• 0: Desabilitado.
• 1: Habilitado (reset default).
4 RESET 4 RESET
OST Módulos
• É necessário usar o OST após sleep porque, no modo
power down, o circuito oscilador interno é desligado.
• A saída do modo power-down também pode gerar
instabilidade na fonte de tensão, afetando o oscilador.
• Ao religá-lo durante o wake-up, o cristal leva tempo
para entrar em regime oscilatório permanente.
(2)Ausente na PIC16F877
25/04/2017 153 25/04/2017 154
4 RESET 4 RESET
Eventos do POR – situação 1 Eventos do POR – situação 2
Pino 32 Pino 32
Pino 1 Pino 1
72ms 72ms
Início Início
Retardo Retardo
26
25/04/2017
4 RESET 4 RESET
Eventos do POR – situação 3 Exemplos
Pino 32
Pino 1
Início
Retardo
4 RESET 4 RESET
Bits Bits
• Power-on Reset Status bit.
• STATUS Status Register 083h • 1: Não houve um POR.
• NOT_TO Time-Out bit • 0: Houve um POR.
• NOT_PD Power-Down bit • Brown-out Reset Status bit.
• PCON Power Control Register 08Eh • 1: Não houve um BOR.
• NOT_PER* Memory ParityError Reset Status bit • 0: Houve um BOR.
• NOT_POR Power-on Reset Status bit • Os bits NOT_POR e NOT_POR são
• NOT_BOR Brown-out Reset Status bit configurados para zero automaticamente
quando o evento descrito ocorre.
• A fim de que esses bits possam, novamente,
identificar os eventos, é necessário
*Ausente na PIC16F877
configurá-los para um manualmente.
25/04/2017 159 25/04/2017 160
4 RESET 4 RESET
Wake-up Bits
/POR /BOR /TO /PD Explicação
• O wake-up permite que o programa 1 1 1 1 Não houve nada.
retome do ponto onde havia parado. 0 1 1 1 Houve um Power-On reset.
1 0 1 1 Houve um Brown-Out reset.
• O valor do PC é preservado. 1 1 0 1 Houve um WDT reset.
• O wake-up pode ser feito por: 1 1 1 0 Houve um wake-up via /MCLR.
Ilegal. Se o chip acabou de ser ligado,
• WDT. 0 0 x x
não pode ter havido Brown-Out reset.
• /MCLR. Ilegal. Se o chip acabou de ser ligado,
0 x 0 x
• Interrupção que não dorme. não pode ter havido WDT time-out.
0 x x 0 Ilegal. Se o chip acabou de ser ligado,
• OST é acionado. não pode ter havido power-down.
1 1 0 0 Houve um WDT wake-up.
1 1 mantém mantém Houve um reset* via pino /MCLR.
*Sem ser no modo power down.
25/04/2017 161 25/04/2017 162
27
25/04/2017
4 RESET 4 RESET
/POR /BOR /TO /PD
Situações ilegais 0 0 x x Situações ilegais
0 x 0 x
0 x x 0
/POR /BOR /TO /PD
• Se houve um power-on-reset, a ocorrência 0 0 x x
de um brown-out-reset anterior é irrelevante. 0 x 0 x
• Se houve um power-on-reset, a ocorrência 0 x x 0
de um WDT-time-out anterior é irrelevante.
• Se houve um power-on-reset, a ocorrência
de um power-down anterior é irrelevante. • Quando um evento acontece, seu
• Se houve um brown-out-reset, a ocorrência bit correspondente vai para zero.
de um power-on-reset anterior é irrelevante. • Se há outro bit valendo zero, este
• Se houve um WDT-time-out, a ocorrência de bit passa para um automaticamente.
um power-on-reset anterior é irrelevante.
• Se houve um power-down, a ocorrência de
25/04/2017 163 25/04/2017 164
um power-on-reset anterior é irrelevante.
5 TEMPORIZAÇÃO 5 TEMPORIZAÇÃO
Contador
• Counter.
• Contador e temporizador digitais são o mesmo circuito.
• A nomenclatura muda de acordo com a finalidade.
• O nome contador é usado quando o valor instantâneo da
contagem é acessado e é usado para alguma finalidade.
TEMPORIZAÇÃO • Contadores são, preferencialmente, construídos na forma
síncrona, isto é, todos os FF’s operam à mesma frequência.
• Contadores síncronos são, preferencialmente, construídos
por meio de FF’s JK, sendo necessário um FF e uma porta
AND de duas entradas para cada bit do contador.
• Contadores assíncronos são, preferencialmente,
construídos por meio de FF’s D.
25/04/2017 165 • O término da contagem é chamado de overflow.
25/04/2017 166
5 TEMPORIZAÇÃO 5 TEMPORIZAÇÃO
Temporizador Temporizador
• Timer. • O TO ocorre na borda negativa do bit mais significativo.
• Há diversos tipos de temporizadores, incluindo • Por esse motivo, esse bit é chamado de /TO.
analógicos e mecânicos. • Esse bit pode ser usado em controle por borda.
• Temporizador digital é um tipo particular de contador.
Q0
• O nome temporizador é usado quando o valor
instantâneo da contagem não é acessado, interessa,
Q1
apenas, o término da contagem, quando ocorre overflow.
• O término da temporização é chamado de time-out (/TO Q2
– término do período de contagem). /TO
Q3
• Em alguns chips temporizadores/contadores, o bit /TO
permanece ativo em um ou meio ciclo de clock.
28
25/04/2017
5 TEMPORIZAÇÃO 5 TEMPORIZAÇÃO
Temporizadores comerciais Contador assíncrono
• Em muitos chips contadores comerciais, existe uma • Temporizadores são construídos, preferencialmente, a
saída de sinalização de overflow. partir de contadores assíncronos.
• Esta saída pode ser em nível alto ou em nível baixo. • No contador assíncrono, os FF’s operam no modo
• Geralmente, a sinalização ocorre no primeiro semi- toogle switch (divisor de frequência por 2).
ciclo da contagem. • Contadores assíncronos empregam,
preferencialmente, FF’s D, mais simples do que os JK.
CLK • Contadores assíncronos são piores do que os
Q0 síncronos porque alguns bits de saída apresentam
Q1 spikes em alguns transitórios.
Q2
• Como temporizadores usam, apenas, o bit mais
significativo, e este é usado como relógio, a questão
Q3 /TO
dos spikes não é problema.
25/04/2017
OF 169 25/04/2017 170
5 TEMPORIZAÇÃO 5 TEMPORIZAÇÃO
Contadores com FF JK Sincronicidade
Exemplo para 4 bits
5 TEMPORIZAÇÃO 5 TEMPORIZAÇÃO
Temporizadores na PIC Escaladores
• A PIC16F877 possui três temporizadores
• Além destes há outros temporizadores não
registrados e programáveis:
registrados, não podem ser usados como
• TIMER0.
contadores acessáveis ao código assembly.
• TIMER1.
• Podem executar dois tipos de função:
• TIMER2.
• Contador Prescaler. (pré escalador)
• Por serem SFR’s, contam de forma síncrona e • Contador Postscaler . (pós escalador)
podem ser usados como contadores.
• Ambos atuam como temporizadores, de
• Alguns contadores oferecem a opção de serem modo que o valor instantâneo não interessa.
operados em modo assíncrono.
• Somente interessa o envio do sinal de
• A registração (SFR) é o próprio contador, tal
término da contagem.
como acontece com PCL.
25/04/2017 173 25/04/2017 174
29
25/04/2017
5 TEMPORIZAÇÃO 5 TEMPORIZAÇÃO
Rampa Contador escalador
• Um contador binário crescente oferece, apenas, números
binários crescentes. • O contador scaler é assíncrono (ripple counter), mais
• Convertendo esses números para a base decimal e simples e suas desvantagens não afetam esta aplicação.
desenhando o gráfico, obtém-se uma função do primeiro • O contador assíncrono usa um FF em modo toogle para
grau ascendente. cada bit; gera valores instáveis nos bits de saída nas
t
• Este gráfico forma uma rampa. transições de estados e é útil quando o valor instantâneo
• A função não é contínua, mas discreta. do contador não é usado.
• A rampa é uma escada cujos degraus são muito • Escaladores promovem o ratio (razão, divisão) na
pequenos. contagem ou temporização.
• Cada rampa ocupa um período de contagem.
• O overflow do contador inicia uma nova rampa.
• Várias rampas juntas formam uma função dente-de-serra.
25/04/2017 175 25/04/2017 176
5 TEMPORIZAÇÃO 5 TEMPORIZAÇÃO
Contador prescaler Contador prescaler
• Circuito que multiplica por um inteiro o tempo do relógio
em um contador ou temporizador.
• O tempo da contagem simples é multiplicado.
• O tempo de um passo de contagem é multiplicado. • Cada término do contador prescaler
acrescenta “1” ao contador principal.
• Quanto maior, mais tempo demora para o envio do sinal
de término da contagem do prescaler. • O bit /TO do prescaler é usado como
clock do contador principal.
• É um divisor de frequência de relógio.
• O controle é em borda negativa.
• É um temporizador de “n” bits acoplado à entrada de
clock o do contador simples.
• “n” é a razão (ratio) do prescaler (1:n).
• É um temporizador colocado no início do contador
original, daí o nome “prescaler”, pré escalador.
25/04/2017 177 25/04/2017 178
5 TEMPORIZAÇÃO 5 TEMPORIZAÇÃO
Contador prescaler Contador prescaler
Exemplo para ratio 1:4
Ratio 1:1
Cada cor, cada rampa é t
uma contagem completa.
Ratio 1:2
t
t
3 Contador prescaler
Ratio 1:3 2
1
0 t
t
30
25/04/2017
5 TEMPORIZAÇÃO 5 TEMPORIZAÇÃO
Contador prescaler Contador prescaler
Exemplo para ratio 1:256
Ratio FF’s
1:1 0
1:2 1
1:4 2
1:8 3
t 1:16 4
1:32 5
255 Contador prescaler 1:2n n
0 t
5 TEMPORIZAÇÃO 5 TEMPORIZAÇÃO
Prescaler configurável 1:2, 1:3, 1:4 Contador postscaler
Este slide não cai na prova.
5 TEMPORIZAÇÃO 5 TEMPORIZAÇÃO
Contador postscaler Contador postscaler
• Cada passo do contador postscaler indica
término no temporizador principal.
• É um contador colocado no final do temporizador, • Cada término do contador postscaler (/TO)
daí o nome “postscaler”, pós-escalador. indica término na temporização total.
• O valor da temporização original não é alterado. • A indicação do término no temporizador principal
• O tempo de um passo de contagem temporizador não interessa, mas, sim, o múltiplo dessa
digital original não é alterado. contagem, daí o uso do contador postscaler.
• Pode haver uma interrupção associada ao /TO.
• Usado para acionar algum circuito externo ao
temporizador e o contador postscaler.
31
25/04/2017
5 TEMPORIZAÇÃO 5 TEMPORIZAÇÃO
Contador postscaler Contador postscaler
Exemplo para ratio 1:3 Exemplo para 2 bits e ratio 1:3
Estado Postscaler
00 0 • Os estados do temporizador
01 0
t
principal são repetidos três vezes.
10 0
1 temporização
11 • Não há aplicação para uma
0
00 mesma contagem feita três vezes.
1
1 ciclo • Há aplicação para uma
01 1
3 contagens
10 1 temporização feita três vezes.
11 1 • O postscaler somente encontra
Sinalização Sinalização Sinalização 00 2 utilidade em temporização.
de time-out de time-out de time-out
01 2
10 2
25/04/2017 187 25/04/2017 188
11 2
5 TEMPORIZAÇÃO 5 TEMPORIZAÇÃO
Prescaler/Postscaler Contadores – Exemplo
Modelo conceitual
Contador
• Prescaler : A circuit that slows the rate of a Contador
Prescaler Contador
Postscaler
clocking source to a counter/timer. (Glossary) Assíncrono Principal
Assíncrono
TCY Síncrono
• Postscaler: A circuit that slows the rate of the
interrupt generation (or WDT reset) from a
counter/timer by dividing it down. (Glossary)
3-bit 8-bit 2-bit
• O contador Prescaler age como controlador da COUNT COUNT COUNT
frequência do relógio do contador.
• O contador Postscaler age como um multiplicador 7 0
bit 2 bit 7
no número de temporizações completas. bit 1 /TO
5 TEMPORIZAÇÃO 5 TEMPORIZAÇÃO
Temporizadores na PIC Temporizadores não registrados
• Temporizadores registrados:
• TIMER0 (08 bits).
• TIMER1 (16 bits). Instruction
Decoder
• TIMER2 (08 bits).
• Os registros correspondem a SFR’s.
• Temporizadores não registrados não correspondem a SFR’s.
• Os temporizadores registrados possuem temporizadores não
registrados atuando como prescaler ou como postscaler.
• Outros temporizadores não registrados:
• Power-up timer.
• Oscilator start-up timer.
• Watchdog
25/04/2017 timer. 191 25/04/2017 192
32
25/04/2017
5 TEMPORIZAÇÃO 5 TEMPORIZAÇÃO
Temporizadores não registrados Tempo
TOSC TCY
• Power-up timer.
• Oscilator start-up timer.
• Watchdog timer.
• Power-up timer e Watchdog timer são analógicos.
• São totalmente independentes do clock do sistema. Instrução 1 Instrução 2 Instrução 3
5 TEMPORIZAÇÃO 5 TEMPORIZAÇÃO
PC, TMR0, TMR1 e TMR2 Alteração em PC, TMR0, TMR1 e TMR2
• PC: 13 bits
• TMR0: 08 bits • Alteração natural: Devido ao incremento
intrínseco do comportamento do contador.
• TMR1: 16 bits
• Forçada: Devido a uma operação de
• TMR2: 08 bits escrita no contador via programa.
Rolding registers for counters • Em uma escrita forçada, o contador
• PCL XX0000010b prescaler envolvido, se houver, é
reiniciado automaticamente.
• TMR0 000000001b, 001h, banco 0
• Se houver, também, um contador
• TMR0 100000001b, 101h, banco 2
postscaler, este também é reiniciado.
• TMR0 X00000001b
• TMR1L 000001110b, 00Eh, banco 0
• TMR1H 000001111b, 00Fh, banco 0
25/04/2017 195 25/04/2017 196
• TMR2 000010011b, 011h, banco 0
5 TEMPORIZAÇÃO 6 WDT
INDF 000h INDF 080h INDF 100h INDF 180h
TMR0 001h OPTION_REG 081h TMR0 101h OPTION_REG 181h
PCL 002h PCL 082h PCL 102h PCL 182h
STATUS 003h STATUS 083h STATUS 103h STATUS 183h
FSR 004h FSR 084h FSR 104h FSR 184h
PORTA 005h TRISA 085h 105h 185h
Contadores registrados
WDT
SSPCON 014h SSPSTAT 094h
CCPR1L 015h 095h
CCPR1H 016h 096h
CCP1CON 017h 097h
RCSTA 018h TXSTA 098h GPR’s GPR’s
TXREG 019h SPBRG 099h
RCREG 01Ah 09Ah
CCPR2L 01Bh 09Bh
CCPR2H 01Ch 09Ch
CCP2CON 01Dh 09Dh
ADRESH 01Eh ADRESL 09Eh
ADCON0 01Fh ADCON1 09Fh
020h 0A0h
GPR’s GPR’s
06Fh 0EFh 16Fh 1EFh
070h 0F0h 170h 1F0h
25/04/2017 197 25/04/2017 198
GPR’s GPR’s GPR’s GPR’s
07Fh 0FFh 17Fh 1FFh
33
25/04/2017
6 WDT 6 WDT
WDT WDT
• O WDT impede que a MCU trave.
http://people.lett.unitn.it/riley/images/Watchdog.jpg
6 WDT 6 WDT
WDT em software WDT
• A única forma de identificação de um possível
travamento é por meio de um /TO.
• Este princípio também é empregado em
comunicação, onde um temporizador, iniciado
automaticamente a cada nova informação recebida,
http://pcaholic.com/images/not_responding.gif
pode indicar uma desconexão em caso de /TO.
• O valor do tempo de /TO geralmente é configurável
na maioria dos dispositivos.
• O reset default é o valor máximo de tempo para o
WDT, pois esta opção minimiza a probabilidade de
erro de programação, gerando um /TO.
6 WDT 6 WDT
WDT WDT – Bits
• A temporização watchdog é feita por um circuito RC.
• O período WDT mínimo é de 18ms, aproximadamente. WDT /POR /BOR /TO /PD
Reset 1 1 0 1
• O WDT faz a temporização mesmo durante o power down. Wake-Up 1 1 0 0
• O WDT /TO pode gerar dois tipos de evento:
• WDT Reset (durante operação normal). • NOT_POR Não é o caso.
• WDT Wake-up (durante o power down). • NOT_BOR Não é o caso.
• O WDT reset faz PC0000b. • NOT_TO Time-Out -Sim
• O WDT wake-up faz PCPC+1. • NOT_PD Power-down -Não para reset e sim para wake-up .
• Time-Out: Overflow no WDT.
• Power-down: Modo de economia de energia.
34
25/04/2017
6 WDT 6 WDT
WDT – Habilitação WDT – Período
Exemplo para:
• Postscaler Ratio = 1:1.
• O WDT pode ser desabilitado.
• VDD = 5V.
• Bit 2 do Configuration Word.
• Temperatura: -40°C a +85°C.
• Como tal, não pode ser alterado na execução do programa.
• WDTE (WDT Enable Bit)
• 0: WTD desabilitado. 3FFBh.
• 1: WTD habilitado. 3FFFh (reset default). Mínimo 07ms
Típico 18ms
Máximo 33ms
6 WDT 6 WDT
WDT/TMR0 WDT/TMR0 – Configuração
• Elementos siameses.
• Presentes no mesmo bloco funcional. • Option_Reg: Controla o WDT e o TMR0.
• Funcionamento independente. • Registrador 010000001b, 081h, banco 1
• Compartilham o scaler – gerador do division ratio. • Registrador 110000001b, 181h, banco 3
• Somente um deles usa o scaler. • Registrador X10000001b
6 WDT 6 WDT
WDT/TMR0 – Configuração WDT/TMR0 Postscaler/Prescaler
35
25/04/2017
6 WDT 6 WDT
WDT/TMR0 Postscaler/Prescaler WDT/TMR0 Postscaler/Prescaler
• Option_Reg<2:0>, <PS2:PS0>:
• O WDT é inacessível ao usuário.
• Definem o scaler ratio.
• O prescaler/postscaler counter é inacessível ao usuário.
• Option_Reg<3>, PSA:
• TMR0 prescaler (PSA=0): Qualquer instrução que escreva
• Determina quem recebe o ratio. no registrador TMR0 reinicia o prescaler.
• 0: TMR0 prescaler. • WDT postscaler (PSA=1): A instrução CLRWDT reinicia o
• 1: WDT postscaler (reset default). WDT e o postscaler.
• Para atribuir TMR0 prescaler ratio 1:1, fazer PSA indicar WDT. • Por reiniciação do scaler, entende-se a configuração 00h.
• Para atribuir WDT postscaler ratio 1:1, fazer PSA indicar TMR0. • A configuração do scaler (Option_Reg<2:0>,
<PS2:PS0>) não é alterada em nenhum dos dois casos.
6 WDT 6 WDT
WDT/TMR0 Postscaler/Prescaler WDT/TMR0 Postscaler/Prescaler
• O prescaler/postscaler ratio pode ser configurado. PSA,PS2,PS1,PS0 TMR0 ratio WDT ratio
• Option_Reg<2:0>, <PS2:PS0>. 0000 1:2 1:1
0001 1:4 1:1
Prescaler Postscaler 0010 1:8 1:1
0011 1:16 1:1
<PS2:PS0> TMR0 ratio WDT ratio
0100 1:32 1:1
000 1:2 1:1 0101 1:64 1:1
001 1:4 1:2 0110 1:128 1:1
010 1:8 1:4 0111 1:256 1:1
011 1:16 1:8 1000 1:1 1:1
1001 1:1 1:2
100 1:32 1:16 1010 1:1 1:4
101 1:64 1:32 1011 1:1 1:8
110 1:128 1:64 1100 1:1 1:16
111 1:256 1:128 Reset default 1101 1:1 1:32
1110 1:1 1:64
25/04/2017 213 25/04/2017 214
1111 1:1 1:128
6 WDT 6 WDT
WDT – Contador postscaler WDT – Contador postscaler
Exemplos para ratios 1:1, 1:2 e 1:4
• O RC é o relógio do postscaler.
• Com ratio 1:1, o postscaler não é usado.
25/04/2017 215 25/04/2017 CLRWDT /TO 216
1:4
36
25/04/2017
6 WDT 6 WDT
WDT – Funcionamento WDT – PSA=0
Contador de 8 bits
RC Reset Compartilhado RC
como prescaler Scaler atribuído Não usado
a TMR0
21 do TMR0 pelo WDT
1 bit
81
1 bit
Option_Reg <2:0>
=0
Option_Reg <3>
0: TMR0
1: WDT
21
1 bit =0
Option_Reg <3>
PSA = 0: WDT não usa Postscaler
PSA = 1: WDT usa Postscaler /TO /TO
25/04/2017 217 25/04/2017 218
6 WDT 6 WDT
WDT – PSA=1 WDT – Postscaler
RC Base de tempo
RC
Usado
pelo WDT Q0
Q1
=1 Q2
Contador
Q3
Q4
Q5
Q6
=1 Q7
6 WDT 6 WDT
WDT – Postscaler MUX WDT – Postscaler MUX
Modelo conceitual Sel: <PS2:PS0> Modelo conceitual
RC 1:1
flip-flop 1:2
Sel: <PS2:PS0>
Q0
1:4 1-bit
Q1
RC 8-bit 1:2
1:1
1-bit
Q2
1:8
MUX /TO
1:4
1:8
/TO
POSTSCALER 1:16
MUX
81
1:16 1:32
Q3 COUNTER 1:64
Q4
Q5
Q6
1:32
1:64
1:128
1:128
1:256
81
Q7 1:256
25/04/2017 • Com ratio 1:1, o postscaler não é usado. 221 25/04/2017 222
37
25/04/2017
6 WDT 6 WDT
WDT – Interrupção CLRWDT
Instrução Nibble 3 Nibble 2 Nibble 1 Nibble 0 opcode
6 WDT 6 WDT
SLEEP Wake-up
Instrução Nibble 3 Nibble 2 Nibble 1 Nibble 0 opcode
6 WDT 6 WDT
Fatos que reiniciam o contador postscaler WDT/TMR0
38
25/04/2017
6 WDT 6 WDT
WDT/TMR0 – PSA=0 WDT/TMR0 – PSA=1
=0 =1
=0 =1
=0 =1
25/04/2017 229 25/04/2017 230
7 TIMER 0 7 TIMER 0
Características
• Contador programável de 8 bits (00h a FFh).
• 28 = 256 passos de contagem.
• Prescaler programável de 8 bits (até 1:256).
• Prescaler programável por 3 bits (8+1 opções).
TIMER 0 • Interrupção por overflow.
• Base de tempo (relógio) interna ou externa.
• Pode operar como temporizador ou como contador.
• Sensibilidade a borda positiva ou negativa*.
• TMR0 e WDT estão no mesmo bloco funcional.
• O WDT reset pode interromper o TMR0.
• Permanece pausado em power-down.
25/04/2017 231 25/04/2017 232
* Somente para relógio externo
7 TIMER 0 7 TIMER 0
Escrita Registradores
39
25/04/2017
7 TIMER 0 7 TIMER 0
Onda dente-de-serra Período
255d FFh
• TOSC: Período do relógio.
127d 7Fh • TCY: Período de instrução.
• TSTEP: Tempo do passo de contagem.
000d 00h t
• TRAMP: Tempo de uma contagem completa.
• Um contador crescente pode ser interpretado como um
gerador de onda dente-de-serra.
• O valor analógico instantâneo desta onda é determinado
pelo valor da palavra formada por todos os bits do contador.
• Os degraus que formam a onda são representados pela
linha inclinada.
• 25/04/2017
O período da rampa é o tempo de uma contagem completa. 235 25/04/2017 236
7 TIMER 0 7 TIMER 0
Período Option_Reg
7 TIMER 0 7 TIMER 0
Prescaler ratio Prescaler MUX
TCY Base de tempo
Modo temporizador
Q0
• <PS2:PS0>: Timer0 Clock Prescale Select bits.
PSA
PS2
PS1
PS0
Q1
Ratio
1 X X X 1:1 1:20 Q2
Contador
0 0 0 0 1:2 1:21 prescaler
Q3
0 0 0 1 1:4 1:22
Q4
0 0 1 0 1:8 1:23 Q5
0 0 1 1 1:16 1:24 Q6
Q7
0 1 0 0 1:32 1:25
0 1 0 1 1:64 1:26 • Q0 – Q7: Bits do contador prescaler.
25/04/2017 0 1 1 0 1:128 1:27 239 25/04/2017
• Inacessíveis ao programa assembler. 240
0 1 1 1 1:256 1:28
40
25/04/2017
7 TIMER 0 7 TIMER 0
Prescaler MUX Prescaler MUX
Modelo conceitual Sel: <PSA,PS2:PS0> Modelo conceitual
TCY 1:1
flip-flop 1:2
Sel: <PSA,PS2:PS0>
Q0
Q1
1:4
1-bit 1:1
1-bit
TSTEP
TCY 8-bit 1:2
Q2
1:8
MUX PRESCALER
1:4
1:8
1:16
1:32 MUX
TSTEP
1:16
COUNTER
Q3
Q4
Q5
1:32
1:64
91 1:64
1:128
1:256
91
1:128
Q6
Q7 1:256
25/04/2017 • Com ratio 1:1, o prescaler não é usado. 241 25/04/2017 242
7 TIMER 0 7 TIMER 0
Prescaler MUX Contador prescaler
Modelo conceitual
TCY
• O mesmo sinal usado para reiniciar o contador
PSA prescaler é usado para incrementar TMR0.
<PS2:PS0>
• Toda alteração forçada em TMR0 é acompanhada
1 1-bit de um reset no contador prescaler.
Reset
8-bit 1-bit
PRESCALER 0 21 • Não há como alterar TMR0 sem a reiniciação do
COUNTER 81
MUX contador prescaler.
MUX
• O mesmo vale para TMR1 e para TMR2.
8-bit O0
TMR0 O7
7 TIMER 0 7 TIMER 0
Contagem – Modo temporizador Contagem – Modo temporizador
Exemplo para prescaler ratio de 1:1
• SRAM pode ser escrita somente em Q4*.
• O incremento em TMR0 é feito no período Q4 do TCY. TCY
• A figura abaixo vale para PSA=1 (1:1).
Q1 Q3 Q1 Q3 Q1 Q3
Q2 Q4 Q2 Q4 Q2 Q4 t
Passo
TCY
* Há exceções.
25/04/2017 245 25/04/2017 246
41
25/04/2017
7 TIMER 0 7 TIMER 0
Contagem – Modo temporizador Contagem – Modo temporizador
Exemplo para prescaler ratio de 1:1 TCY Exemplo para prescaler ratio de 1:2 TCY
Q1 Q3 Q1 Q3 Q1 Q3 Q1 Q3 Q1 Q3 Q1 Q3
Q2 Q4 Q2 Q4 Q2 Q4 Q2 Q4 Q2 Q4 Q2 Q4
t t
Passo
Passo
TSTEP
Q4 Q2 Q4 Q2
Q1 Q3 Q1 Q3
7 TIMER 0 7 TIMER 0
Modos de operação Modos de operação
Temporizador
• Option_Reg<5>, T0CS: TMR0 Clock Source Select bit. • T0CS=0: CLKOUT – Timer
• 0: CLKOUT(f OSC/4) – Internal instruction cycle clock. • T0CS=1: T0CKI – Counter
• 1: T0CKI (pino 6) –TMR0 clock input (reset default).
• Todos os modos de operação estão sujeitos ao prescaler.
25/04/2017 249 25/04/2017 250
7 TIMER 0 7 TIMER 0
Modo temporizador Modo contador
• O modo contador possui esse nome porque, usando um
• O modo temporizador possui esse nome porque, usando relógio externo, é possível, apenas, realizar uma contagem.
f CY como relógio para TMR0 (sinal CLKOUT), é possível • Não é possível fazer uma temporização pois a MCU não
saber qual é o tempo de uma contagem, com base no valor sabe qual a frequência de operação.
de f CY. • Este modo de operação não permite o uso do pino 6 como
• O valor de f CY deve ser dividido pelo prescaler ratio caso o RA4, usado, aqui, como entrada de relógio externo.
escalador esteja atribuído a TMR0. • Configurar TRISA<4>=1 (BSF TRISA,RA4).
• Este modo de operação permite o uso do pino 6 como RA4. • O uso do relógio externo permite diminuir a rapidez de
• CLKOUT não se trata do pino usado no relógio por RC, contagem, aumentando o tempo de contagem.
mas, sim, do sinal que identifica o ciclo de instrução. • Jamais o modo contador pode fazer uma contagem mais
rápida do que a do modo temporizador. Se f OSC é muito
baixo, f ext precisa ser mais baixo ainda.
25/04/2017 251 25/04/2017 252
42
25/04/2017
7 TIMER 0 7 TIMER 0
Modo contador – Controle de bordas Modo contador – Controle de bordas
7 TIMER 0 7 TIMER 0
Modo contador – Controle de bordas Modo contador – Controle de bordas
CLK Falling Edge
(Reset Default) (6)
Q0
Q1
Q2
• A porta XOR age como um negador configurável.
• Se T0SE=0, o negador está desligado. Não há
Q3
inversão na onda quadrada.
CLK Rising Edge • Se T0SE=1, o negador está ligado. A onda
Q0 quadrada é invertida.
Q1 • Considerando que, se T0SE=0, não há inversão
Q2 da onda quadrada, então a sensibilidade sem a
Q3
porta XOR é rising edge.
25/04/2017 255 25/04/2017 256
• Q0 a Q7: Saídas dos flip-flop’s usados em TMR0.
7 TIMER 0 7 TIMER 0
Modo contador – Controle de bordas Modo contador – Controle de bordas
• O relógio externo não pode ser mais rápido do que o interno.
t • O relógio externo deve ter nível alto por pelo menos 2TOSC.
Relógio original para contagem R.E.
• O relógio externo deve ter nível baixo por pelo menos 2TOSC.
t
• O requisito individual para níveis alto e baixo é feito porque o
Relógio negado para contagem F.E. relógio externo pode ter um dutty-cycle diferente de 50%.
• Não basta que TEXT TCY, pois, mesmo satisfazendo esta
t exigência, um dutty-cycle muito acima ou muito abaixo de
Passos para contagem R.E.
50% pode proporcionar um tempo alto ou tempo baixo
menor do que 2TOSC.
t
Passos para contagem F.E.
• Esta exigência é feita por causa de características internas
do dispositivo, e que não foram especificadas no data sheet.
• O data sheet não relata o que acontece caso esta exigência
25/04/2017 257 25/04/2017 258
não seja respeitada.
43
25/04/2017
7 TIMER 0 7 TIMER 0
Modo contador – Controle de bordas Modo contador – Controle de bordas
TCY
• No modo contador, é preciso que haja sincronia
entre as bordas do relógio externo e as do interno.
• É usado um circuito sincronizador.
OSC
t • Esta sincronia garante que T0CKI traga, no máximo,
TOSC uma alteração em cada ciclo de contagem.
• Isso é necessário porque os incrementos de TMR0
2TOSC
podem acontecer, somente, em Q4.
CLKIN t
Mínimo tempo alto
Mínimo tempo baixo
7 TIMER 0 7 TIMER 0
Modo contador – Controle de bordas Modo contador – Controle de bordas
Exemplo para prescaler ratio de 1:1 Exemplo para prescaler ratio de 1:1
Q1 Q3 Q1 Q3 Q1 Q3
TCY Q2 Q4 Q2 Q4 Q2 Q4
t t
Ciclos de CLKIN
t
Passo
normal
Ciclos para TMR0
Passo
estendido
Passo Passo
normal estendido
7 TIMER 0 7 TIMER 0
Modo contador – Controle de bordas Modo contador – Controle de bordas
Exemplo para prescaler ratio de 1:2
Q1 Q3 Q1 Q3 Q1 Q3
Q2 Q4 Q2 Q4 Q2 Q4
t
• Os cálculos para TRAMP, f RAMP, TSTEP e f STEP são
exatos somente para o modo temporizador.
• Para o modo contador, estes cálculos
apresentam o valor médio para TSTEP e f STEP e
Passo um valor aproximado para TRAMP e f RAMP.
normal
• Este erro acontece porque nossos cálculos
Passo
estendido não preveem a ocorrência de passos
estendidos.
44
25/04/2017
7 TIMER 0 7 TIMER 0
Inclinação da rampa Inclinação da rampa
Exemplos
• Os passos normais e estendidos alternam-se em
uma proporção tal que a inclinação da rampa
linearizada seja idêntica à da rampa gerada pelo
sinal externo.
• Graças ao circuito de sincronia, a rampa de TMR0
possui aproximadamente o mesmo período da rampa
produzida caso o circuito de sincronia não existisse.
• Pode ser que haja um pequeno erro no período total
da rampa em virtude do fato da rampa desejada
possuir um período não obtível por meio de uma
combinação de passos normais e estendidos.
7 TIMER 0 7 TIMER 0
Modos de operação Escrita
• A alteração natural em TMR0 é decorrente da própria
1-bit contagem.
MUX
21
• Alteração forçada é qualquer instrução que escreva sobre o
registrador TMR0.
• Uma alteração forçada em TMR0 faz o seu incremento parar
1-bit por 2 ciclos e a contagem é retomada a partir do novo valor.
MUX
(6) 21 • Esses 2 ciclos devem ser multiplicados pelo prescaler ratio
caso PSA=0.
• Uma alteração forçada em TMR0 reinicia o contador
prescaler (00h) caso PSA=0.
• A configuração do division ratio ou de PSA não é alterada.
• Se PSA=0, temporizador e contador
25/04/2017 267 25/04/2017 268
estão sujeitos ao prescaler.
7 TIMER 0 7 TIMER 0
Escrita Escrita no início do passo
Exemplo
Exemplo para prescaler ratio de 1:1 TSTEP = TCY PS ratio
t
Parado
NT0+3
NT0+2
NT0
45
25/04/2017
7 TIMER 0 7 TIMER 0
Escrita em TMR0 fora do início do passo Overflow
Exemplo para 1:3 (didático, mas não disponível)
• O término da contagem (FFh 00h)
t
implica em overflow.
• O overflow de TMR0 ativa uma interrupção.
prescaler
t
NT0+3
NT0+2
reset
Parado NT0+1
TMR0 NT0
7 TIMER 0 7 TIMER 0
Overflow Overflow
Exemplo para prescaler ratio de 1:1
TOSC
TOSC
TCY
TCY
TMR0
TMR0
T0IF
T0IF
overflow
Multiplicar pelo prescaler ratio
overflow
• A interrupção por overflow em TMR0 não • Se o prescaler ratio não for 1:1, TOIF vai para 1
provoca um wake-up, pois, no modo power- no primeiro Q1 para o qual TMR0=FFh.
down, o funcionamento de TMR0 é interrompido. • Se o prescaler ratio não for 1:1, o overflow
25/04/2017 273 25/04/2017 ocorre no último Q4 do passo de contagem. 274
7 TIMER 0 7 TIMER 0
Overflow Overflow
Exemplo para 1:1 Exemplo para 1:2
FFh
FEh
FCh
TMR0 TMR0
FFh
FEh
FCh
Q1 Q3 Q1 Q3 Q1 Q3 Q1 Q3 Q1 Q3 Q1 Q3
Q2 Q4 Q2 Q4 Q2 Q4 Q2 Q4 Q2 Q4 Q2 Q4
Overflow t Overvlow t
46
25/04/2017
7 TIMER 0 7 TIMER 0
Alteração do prescaler ratio Alteração do prescaler ratio
Exemplo para transição de 1:4 para 1:8
7 TIMER 0 7 TIMER 0
Alteração do ratio fora do início do passo Interrupção
Contador prescaler Contador prescaler
Ratio = 1:n Ratio = 1:2n • INTCON<2>, T0IF: TMR0 Overflow Interrupt Flag bit.
passo
perdido • 0: Não houve overflow (reset default).
• 1: Houve overflow.
• INTCON<5>, T0IE: TMR0 Overflow Interrupt Enable bit.
t
• 0: T0IF desabilitado (reset default).
T 2T
Escrita em PS2, PS1, PS0 ou em PSA.
• 1: T0IF habilitado.
Rampa interrompida do contador prescaler
fracionado
TMR0
t
8 TIMER 1 8 TIMER 1
Características
• Contador programável de 16 bits (0000h a FFFFh).
• 216 = 64k = 65536 passos de contagem.
• Prescaler programável de 3 bits (até 1:8).
• Prescaler programável por 2 bits (4 opções).
TIMER 1 • Interrupção por overflow.
• Base de tempo (relógio) interna ou externa.
• Pode operar como temporizador ou como contador.
• O contador pode ser síncrono ou assíncrono.
• Funciona em power-down. Pode gerar wake-up.
47
25/04/2017
8 TIMER 1 8 TIMER 1
Escrita Registradores
8 TIMER 1 8 TIMER 1
Onda dente-de-serra Período
65525d FFFFh
• TOSC: Período do relógio.
127d 7FFFh • TCY: Período de instrução.
• TSTEP: Tempo do passo de contagem.
000d 0000h t
• TRAMP: Tempo de uma contagem completa.
8 TIMER 1 8 TIMER 1
Período T1CON
48
25/04/2017
8 TIMER 1 8 TIMER 1
Prescaler ratio Prescaler MUX
Q0
• <T1CKPS1:T2CKPS0>: Timer1 Clock Prescale Select bits.
Contador
Q1
prescaler
<T1CKPS1:
T1CKPS0> Ratio Q2
8 TIMER 1 8 TIMER 1
Prescaler MUX Prescaler MUX
Modelo conceitual Modelo conceitual
T1CKPS1
T1CKPS0 TCY
TCY
0 21
1 1-bit 0 Prescaler
MUX 3-bit
Reset PRESCALER 1 000
0 COUNTER 2 001
Reset
3-bit 1 16-bit O0 010 1:2
PRESCALER
COUNTER 2 TMR1 O15 Sel
011
1:4
1:1 100
Sel Sel: <T1CKPS1:T1CKPS0> 41 1:2 101
1:1
Ratio MUX Sel 1-bit 1:4 110
41 1:1 TCY em TMR1 00 MUX 1:8
1:2 1:8 111
1-bit 1:4
1:2 001 01
MUX
25/04/2017 1:8 1:4 011 29110 25/04/2017 292
1:8 111 11
8 TIMER 1 8 TIMER 1
Contador prescaler Contador prescaler
T1OSO/
T1CKI
• O mesmo sinal usado para reiniciar o contador (15)
prescaler é usado para incrementar TMR1.
T1OSI (16)
• Toda alteração forçada em TMR1 é acompanhada
de um reset no contador prescaler.
• Não há como alterar TMR1 sem a reiniciação do
contador prescaler.
• O mesmo vale para TMR0 e para TMR2.
49
25/04/2017
8 TIMER 1 8 TIMER 1
Modos de operação Modo contador
Comparação com timer 0
• T0CS=0: CLKOUT – TMR0 Timer
• T0CS=1: T0CKI – TMR0 Counter
• Dois modos de operação: • TMR1CS=0: CLKOUT – TMR1 Timer
• 0: Temporizador (Timer) (reset default) • TMR1CS=1: T1CKI – TMR1 Counter
• 1: Contador (Counter)
• TMR1CS = 1
• T1CON<1>, TMR1CS: TMR1 Clock Source Select bit. • Cada incremento de TMR1 ocorre na borda de
subida do oscilador externo.
• 0: CLKOUT(f OSC/4) – Internal instruction cycle clock.
• O TMR0 também permite o uso de oscilador externo,
• 1: T1CKI (pino 15) –TMR1 clock input.
e possui opção para bordas de subida e de descida.
• 1: T1OSO-T1OSI –TMR1 oscilator
• 25/04/2017
Todos os modos de operação estão sujeitos ao prescaler. 295 25/04/2017 296
8 TIMER 1 8 TIMER 1
Modo contador Modo contador – Oscilador interno
TMR0
TMR1
8 TIMER 1 8 TIMER 1
Modo contador – Oscilador interno Modo contador – Oscilador interno
• T1OSCEN, habilitado, usa, como gerador de relógio, um
cristal acoplado a um circuito interno para a oscilação, tal
como realizado com o oscilador gerador do relógio do
sistema nos modos LP, XT e HS. • A configuração TRIS dos pinos 15 e 16 é feita
• O dimensionamento é idêntico ao do modo LP. automaticamente.
• O cristal é ligado aos pinos T1OSI e T1OSO. • Não existe um oscilator start-up timer.
• T1OSO (pino 15) : Timer1 oscillator output. • O programa deve prover um atraso para esperar até
que o oscilador comece a funcionar adequadamente.
• T1OSI (pino 16) : Timer1 oscillator input.
• T1OSCEN, desabilitado, desliga a porta NOT tri-state, o
oscilador deixa de funcionar, economizando energia elétrica.
• T1OSCEN, desabilitado com TMR1 no modo contador, requer
o envio da onda quadrada em T1CKI (pino 15) e libera o
pino 16 para RC1.
25/04/2017 299 25/04/2017 300
50
25/04/2017
8 TIMER 1 8 TIMER 1
Modo contador – Oscilador interno Modo contador – Oscilador interno
Oscilador para o relógio do sistema excitado por cristal
OSC1 (13)
T1OSI (16)
Frequência C1 C2
25/04/2017 301 25/04/2017 32kHz 33pF 302
33pF
200kHz 15pF 15pF
8 TIMER 1 8 TIMER 1
Modo contador – Oscilador externo T1CON
• Os pinos usados por TMR1 são RC0/T1OSO/T1CKI
(15) e RC1/T1OSI/CCP2 (16).
• Uma onda quadrada • Estando TMR1 desligado, os pinos são liberados para
deve ser aplicada ao pino RC0 (15) e RC1/CCP2 (16).
15. • Estando ligado, no modo temporizador, os pinos não
T1OSCEN=0 são usados e são liberados para RC0 (15) e RC1/CCP2
(16).
• Estando ligado, no modo contador, com oscilador
interno desabilitado, o pino 16 é liberado para
T1CKI RC1/CCP2.
8 TIMER 1 8 TIMER 1
Comportamento em power-down Modo contador assíncrono – Exemplo
• TMR1 continua contando mesmo no modo power-down,
• O modo assíncrono, por não desligar no modo power-
diferentemente do TMR0, que é desligado. down, pode ser usado como uma fonte de sinal de relógio
humano, para marcação de horas, minutos e segundos.
• O oscilador do TMR1 (contador) também funciona no
modo power-down, diferentemente do oscilador interno
para os modos XT, LP e HS.
• O circuito de sincronização pára de funcionar em power-
down, por isso, no modo contador síncrono (T1CON<2>,
T1SYNC=0), TMR1 não conta em power-down.
• Os modos temporizador e contador assíncrono
(T1CON<2>, T1SYNC=1) funcionam em power-down.
• TMR1 possui bit para seleção entre os modos ligado-
desligado, diferentemente do TMR0, que não pode ser
desligado enquanto o programa estiver sendo executado.
25/04/2017 305 25/04/2017 306
51
25/04/2017
8 TIMER 1 8 TIMER 1
Modo contador assíncrono – Exemplo Circuito
8 TIMER 1 8 TIMER 1
Leitura e escrita Gravação começando por H – Exemplo de erro
• Como TMR1H e TMR1L não podem ser acessados em uma
única instrução. • Deseja-se gravar TMR1H=5Ch e TMR1L=A2h.
• Cuidado deve ser tomado em sua leitura ou escrita. • Inicialmente, TMR1H=3Bh e TMR1L=FFh.
• Idealmente, se deve desligar TMR1 (T1CON<0>, TMR1ON=0). • Primeiramente, se grava TMR1H=5Ch.
• O desligamento garante que <TMR1H:TMR1L>, • Nesta primeira etapa, TMR1L=FFh.
TMR1<15:0> não muda nas duas instruções de leitura ou • Em seguida, se grava TMR1L=A2h.
escrita. • Porém, antes dessa última gravação, o overflow em
• Se não for possível desligar TMR1, leitura e escrita devem TMR1L incrementa TMR1H, que, agora, vale 5Dh.
prevenir que TMR1L sofra um overflow, o que incrementaria e • O valor gravado, então, é de 5DA2h e não de 5CA2h.
TMR1H e geraria erro na leitura.
8 TIMER 1 8 TIMER 1
Gravação começando por L – Exemplo de erro Procedimento de gravação
52
25/04/2017
8 TIMER 1 8 TIMER 1
Procedimento de leitura Uso no módulo CCP
• Ler TMR1H e gravar em GPR(1).
• Ler TMR1L e gravar em GPR(2).
• TMR1 é usado pelas funções capture/compare dos
• Ler TMR1H e gravar em GPR(3). módulos CCP1 e CCP2.
• Subtrair GPR(3) – GPR(1), ou vice-versa. • Quando usado por CCP, são permitidos os modos
• Analisar Z,STATUS<2>. temporizador e contador em TMR1.
• Se Z=1, a resposta é zero, então não houve erro. • O modo assíncrono de TMR1 não é permitido.
• Se Z=0, a resposta não é zero, então houve erro. • As funções CCP empregam 16 bits.
• O erro ocorre se, após a primeira leitura de TMR1H, TMR1H • A função compare usa uma ação de reset em TMR1.
sofre um incremento por motivo de overflow em TMR1L.
• Se houve erro, então refazer:
• Ler TMR1H e gravar em GPR(1).
• 25/04/2017
Ler TMR1L e gravar em GPR(2). 313 25/04/2017 314
8 TIMER 1 9 TIMER 2
Interrupção
• O término da contagem (FFFFh 0000h)
implica em overflow.
• O overflow de TMR1 ativa uma interrupção.
9 TIMER 2 9 TIMER 2
Características Escrita
• Contador programável de 8 bits (00h a FFh).
• 28 = 256 passos de contagem. • Tal como acontece em TMR0 e TMR1, uma escrita
em TMR2 provoca a reiniciação do contador
• Prescaler programável de 4 bits (até 1:16).
prescaler no próximo TCY.
• Prescaler programável por 2 bits (3 opções).
• A alteração do prescaler ratio também provoca a
• Interrupção por match. reiniciação do contador prescaler no próximo TCY.
• Não permite uso de relógio externo. • O contador postscaler também é reiniciado.
• Usado como base de tempo para o PWM. • Opções de prescaler ratio: 1:1, 1:4 ou 1:16.
• Entrada de relógio: f OSC/4. • Opções de postscaler ratio: 1:1 até 1:16.
• Entrada de relógio: f CY.
• Permanece pausado em power-down.
53
25/04/2017
9 TIMER 2 9 TIMER 2
Registradores Onda dente-de-serra
PR2
9 TIMER 2 9 TIMER 2
Período Período
9 TIMER 2 9 TIMER 2
Período T2CON
Reset default: PR2 = ffh
54
25/04/2017
9 TIMER 2 9 TIMER 2
Prescaler ratio Prescaler MUX
TCY Base de tempo
Q0
• <T2CKPS1:T2CKPS0>: Timer2 Clock Prescale Select bits.
Q1
Contador
prescaler
<T2CKPS1: Q2
T2CKPS0> Ratio
Q3
00 1:1 1:20 Reset default
01 1:4 1:22
10 1:16 1:24
11 1:16 1:24 • Q0 – Q3: Bits do contador prescaler.
• Inacessíveis ao programa assembler.
25/04/2017 325 25/04/2017 326
9 TIMER 2 9 TIMER 2
Prescaler MUX Prescaler MUX
Modelo conceitual Modelo conceitual
T2CKPS1
T2CKPS0 Prescaler
TCY TCY 0000
0 21 0001
0
1 1-bit 0010
4-bit 1
MUX Reset
0011
PRESCALER 2 0100
0 COUNTER
3 0101
Reset
4-bit 1
8-bit O0 0110
Sel
PRESCALER 2
COUNTER TMR2 O7 0111 1:4
3 1000
1:1 1001
Sel 41 1:4 1010
Sel: <T2CKPS1:T2OUTPS0> 1-bit 1:16
1011
1:1 1100
41 Ratio MUX COUNT Sel MUX 1:16
1:4 1101
1-bit 1:16
1:1 TCY em TMR2 XXXX 00 1110 1:16
MUX 01x 0011 1111
25/04/2017 1:16 1:4 32701 25/04/2017 328
1:16 1xx 1111 1x
9 TIMER 2 9 TIMER 2
Contador prescaler Contador prescaler
55
25/04/2017
9 TIMER 2 9 TIMER 2
Contador postscaler Contador postscaler
Modelo conceitual
TCY Prescaler ratio
Match
9 TIMER 2 9 TIMER 2
Controle do período Controle do período
Exemplo para postscaler ratio 1:3
• PR2<7:0>: Period Register.
• 8 bits (00h a FFh). PR2 = FFh
• PR2 representa o último valor da contagem.
• O comparador gera um reset na contagem.
t
• O comparador verifica se TMR2 é igual a PR2.
• Reset: TMR2<7:0> = PR2<7:0>. T Sinalização Sinalização Sinalização
de match de match de match
• O reset é realizado no próximo passo de contagem, e isso
pode demorar vários TCY, dependendo do prescaler ratio. PR2 < FFh
• O valor de PR2 está incluído na contagem (reset síncrono).
t
• Podem ser necessários vários reset’s para que o término da
contagem seja sinalizado, dependendo do postscaler ratio. T Sinalização Sinalização Sinalização
de match de match de match
25/04/2017 333 25/04/2017 334
9 TIMER 2 9 TIMER 2
Controle do período Controle do período
8 bits
FFh
t
25/04/2017 335 25/04/2017 336
56
25/04/2017
9 TIMER 2 9 TIMER 2
Controle do período Controle do período
• A linha inclinada representa o PR2<7:0> = FFh
valor equivalente a TMR2<7:0>.
PR2+1 = 100h
FFh 28 passos
PR2<7:0> t
TMÁX
00h t PR2<7:0> < FFh
PR2<7:0>
PR2+1 < 100h
28 > passos
t
t
9 TIMER 2 9 TIMER 2
Controle do período Controle do período
PR2<7:0> = FFh
• Como os intervalos de contagem são regulares, a
Período PR2+1 = 100h
relação entre o período e PR2<7:0>+1 é linear.
máximo 28 passos • Configurando PR2 = 00h, não há contagem, TMR2 =
00h sempre.
t
• Configurando PR2 = FFh, não há ação do PR2.
PR2<7:0> = 7Fh
• O valor dado por PR2<7:0> está incluído na contagem.
Metade do
PR2+1 = 80h
período
27 passos
• A quantidade de passos de contagem é dada por
máximo t PR2<7:0>+1.
PR2<7:0> = 3Fh
Um quarto PR2+1 = 40h
6
do período t 2 passos
máximo
25/04/2017 339 25/04/2017 340
9 TIMER 2 9 TIMER 2
Controle do período Controle do período – Exemplo para 1:4
<T2CKPS1: Prescaler
T2CKPS0> Ratio
00 1:1
01 1:4
10 1:16
11 1:16
Match
• Se o TMR2 prescaler ratio for de 1:1, o reset é executado PR2<7:0>
no próximo TCY, que é o próximo passo de contagem.
• Se o TMR2 prescaler ratio for 1:4 ou 1:16, o passo de
contagem contém 4 ou 16 TCY’s, respectivamente.
• O reset ocorre no próximo passo de contagem após a TSTEP
coincidência e não, necessariamente, no próximo TCY. TCY
• Tal como ocorre no TMR1, o prescaler ratio atua, Reset
também, no relógio do comparador e do circuito de reset. t
25/04/2017 341 25/04/2017 00h 342
57
25/04/2017
9 TIMER 2 9 TIMER 2
Controle do período Controle do período
Modelo conceitual
0 • Foi omitido
PR2 = 00h PR2 = FFh
Reset 8-bit o circuito de
TMR2 7 postscaler.
8-bit
COMP
Bit set
0 TMR2IF
8-bit
7
PR2
9 TIMER 2 9 TIMER 2
Controle do período Controle do período
Efeito do prescaler ratio Entrada de
relógio de
PR2<7:0> contagem Contador
<T2CKPS1: de 1,4 ou
Ratio 1:1 Ratio
T2CKPS0> Contador 16 passos
00 1:1 8-bit
01 1:4
10 1:16 Contador de 1
t
11 1:16 a 16 passos
TRAMP
8-bit
PR2<7:0>
Ratio 1:X
X>1 8-bit
t
25/04/2017 345 25/04/2017 346
TRAMP
9 TIMER 2 9 TIMER 2
Controle do período Interrupção
• f OSC influencia no período. • O término da contagem ocorre na coincidência de
• PR2 influencia no período. PR2<7:0> e TMR2<7:0>.
• Prescaler ratio influencia no período. • A reiniciação pela coinciedência ativa uma interrupção.
• Postscaler ratio não influencia no período. • A interupção está sujeita ao postscaler.
• PIR1: Peripheral Interrupts bits 1.
• f OSC TRAMP • PIR1<1>, TMR2IF: TMR2 to PR2 Match Interrupt Flag bit.
• TOSC TRAMP linearmente • 0: Não houve coincidência.
• Presc. TRAMP linearmente • 1: Houve coincidência.
• PR2+1 TRAMP linearmente • PIE1: Peripheral Interrupts Enable bits.
• PIE1<1>, TMR2IE: TMR2 to PR2 Match Interrupt Enable bit.
• 0: TMR2IF desabilitado (reset default).
25/04/2017 347 25/04/2017 348
Vide exemplos • 1: TMR2IF habilitado.
58
25/04/2017
9 TIMER 2 9 TIMER 2
Comparação Comparação
TIMER0 TIMER1 TIMER2
Bits 8 16 8
ON/OFF Não Sim Sim TIMER0 TIMER1 TIMER2
Em power down Não Sim* Não Bits de contagem 8 16 8
Prescaler 1,2,4,8...256 1,2,4,8 1,4,16 Bits contag. prescaler 8 3 4
Postscaler Não Não Sim Bits config. prescaler 3+1 2 2
Controle de Opções prescaler 9 4 3
Não Sim** Sim
período Bits contag. postscaler - - 4
Permite Bits config. postscaler - - 4
Sim Sim Não
relógio externo Opções postscaler - - 16
Oscilador int. Não Sim Não
Interr. Flag T0IF TMR1IF TMR2IF
9 TIMER 2
Comparação
Prescaler ratio
Timer 0
PS2
PS1
PS0
PSA
Ratio
Timer 1 Timer 2
X X X 1 1:1 <T1CKPS1: <T2CKPS1:
0 0 0 0 1:2 Ratio Ratio
T1CKPS0> T2CKPS0>
0 0 1 0 1:4 00 1:1 00 1:1
0 1 0 0 1:8 01 1:2 01 1:4
0 1 1 0 1:16 10 1:4 10 1:16
1 0 0 0 1:32 11 1:8 11 1:16
1 0 1 0 1:64
1 1 0 0 1:128
1 1 1 0 1:256
25/04/2017 351
59