Você está na página 1de 59

25/04/2017

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

• Interromper não significa paralisar.


• Interrupção é a mudança do PC para a
rotina de interrupção, com retorno.
• Essa mudança age como a instrução CALL.
INTERRUPÇÕES • Após a execução da sub-rotina, o PC
retorna ao local original.
• Isto permite que algum evento pré-
determinado possa interromper a execução
do programa em qualquer TCY.

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ção na borda de subida (reset default).


• Registrador 010000001b, 081h, banco 1 • Estes pinos devem ser
• Registrador 110000001b, 181h, banco 3 configurados como entrada.
• Registrador X10000001b • TRISB<4>=1 (BSF TRISA,RB4).
• TRISB<5>=1 (BSF TRISA,RB5).
• TRISB<6>=1 (BSF TRISA,RB6).
25/04/2017 7 25/04/2017 8
• TRISB<7>=1 (BSF TRISA,RB7).

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

• Se for necessário distinguir os quatro pinos, é preciso


GOTO INTRB5

. 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
.

através das instruções BTFSC ou BTFSS. GOTO


BTFSC
INTRB4
PORTB,RB5
RB4 RB5 RB6 RB7

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

• INTCON<7>, <GIE> • INTCON<2>, <T0IF>


• Global Interrupt Enable bit. • TMR0 Overflow Interrupt Flag bit.
• 0: Desabilita interrupções (reset default). • 0: Não houve interrupção por overflow (reset default).
• 1: Habilita interrupções. • 1: Houve interrupção por overflow.
• INTCON<6>, <PEIE> • INTCON<5>, <T0IE>
• Peripheral Interrupt Enable bit. • TMR0 Overflow Interrupt Enable bit.
• 0: Desabilita interrupções periféricas (reset default). • 0: Desabilita interrupção por overflow (reset default).
• 1: Habilita interrupções periféricas. • 1: Habilita interrupção por overflow.

25/04/2017 13 25/04/2017 14

1 INTERRUPÇÕES 1 INTERRUPÇÕES
INTCON INTCON

• INTCON<1>, <INTF> • INTCON<0>, <RBIF>


• INT External Interrupt Flag bit. • Port B change Interrupt Flag bit.
• 0: Não houve interrupção externa (reset default). • 0: Não houve interrupção por mudança (reset default).
• 1: Houve interrupção externa. • 1: Houve interrupção por mudança.
• INTCON<4>, <INTE> • INTCON<3>, <RBIE>
• INT External Interrupt Enable bit. • Port B change Interrupt Enable bit.
• 0: Desabilita interrupção externa (reset default). • 0: Desabilita interrupção por mudança (reset default).
• 1: Habilita interrupção externa. • 1: Habilita interrupção por mudança.

25/04/2017 15 25/04/2017 16

1 INTERRUPÇÕES 1 INTERRUPÇÕES
Peripheral Interrupt Outras interrupções
VEREMOS

• T0IF, T0IE TMR0 Overflow • EEIF, EEIE EEPROM Write Operation


VEREMOS

• INTF, INTE INT External Interrupt • PSPIF, PSPIE Parallel Slave Port Read/Write
VEREMOS

• RBIF, RBIE Port B Change • ADIF, ADIE A/D Converter


VEREMOS

• TMR1IF, TMR1IE TMR1 Overflow


VEREMOS

• TMR2IF, TMR2IE TMR2 to PR2 Match


VEREMOS

• CCP1IF, CCP1IE Capture-Compare-PWM 1


VEREMOS
• CCP2IF, CCP2IE Capture-Compare-PWM 2
• RCIF, RCIE USART Receive
• TXIF, TXIE USART Transmit
VEREMOS
• SSPIF, SSPIE Synchronous Serial Port
• BCLIF, BCLIE Bus Collision
25/04/2017 17 25/04/2017 18

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

2 ACESSO À MEMÓRIA 2 ACESSO À MEMÓRIA


Terminologia

• A expressão “acesso à memória” é uma redundância.


• A definição de memória consiste de uma
determinada quantidade de informação que pode ser
ACESSO À MEMÓRIA acessada aleatoriamente ou sequencialmente
sempre que necessário.
• Uma informação inacessível não é uma memória.
• Sendo assim, não existe memória inacessível.

25/04/2017 37 25/04/2017 38

2 ACESSO À MEMÓRIA 2 ACESSO À MEMÓRIA


Tamanhos Memórias
• Memórias que podem ser acessadas:
• SRAM file registers
• Flash program memory
Memória Address Data • EEPROM data memory
Flash 13 bits* 14 bits
• Memória externa
EEPROM 8 bits 8 bits
SRAM 9 bits 8 bits • A SRAM é acessada diretamente por meio das instruções.
• A memória externa é acessada por meio das portas paralelas.
• Flash e EEPROM requerem procedimentos especiais.
• O acesso á memória externa pode usar até 33 bits para dados,
endereço e controle.
* Pode ser menor em outros modelos da família.
25/04/2017 39 25/04/2017 40

2 ACESSO À MEMÓRIA 2 ACESSO À MEMÓRIA


Terminologia Flash e EEPROM
• Quando se fala em acesso à memória, se fala em acesso • Como a flash, a EEPROM e a memória externa
a dados que serão manipulados pelo programa em são muito mais lentas do que a ULA, toda a
execução. comunicação é feita por meio de registradores.
• A EEPROM é chamada de data memory porque ela se • Como os registradores (SRAM) têm velocidade
presta somente ao armazenamento de dados não voláteis. muito superior à das outras memórias, o
• A flash é chamada de program memory porque ela se desempenho da MCU não fica comprometido.
presta principalmente ao armazenamento do programa, • Neste tópico, a flash é tratada como uma data
mas também pode ser empregada no armazenamento de memory. Sua finalidade é a de expandir a
dados. capacidade de armazenamento da EEPROM.
• Este capítulo apresenta o acesso à EEPROM e à flash • Neste tópico, o acesso à flash é igual ao da
como memórias de dados. EEPROM, pelo data bus. Não confundir isso
com arquitetura Von-Neumann.
25/04/2017 41 25/04/2017 42

7
25/04/2017

2 ACESSO À MEMÓRIA 2 ACESSO À MEMÓRIA


Flash, EEPROM e memória externa Flash e EEPROM – Registradores
Flash Ext.
• Os registradores envolvidos com a Flash e a
EEPROM são chamados de “EE” porque,
8-bit
antigamente, não havia Flash, e tanto Program
14-bit 8-bit Memory quanto Data Memory usavam
PORT*
A,B,C,D,E tecnologia EEPROM.
8-bit • Posteriormente, com a introdução da tecnologia
Flash para uso como Program Memory,
File
Registers SFR SFR SFR preferiram manter a nomenclatura original.

8-bit Data Bus


25/04/2017 43 25/04/2017 44
* O PSP não serve para este propósito.

2 ACESSO À MEMÓRIA 2 ACESSO À MEMÓRIA


Flash e EEPROM – Registradores Flash e EEPROM – Registradores
• EEDATA EEPROM/Flash data low byte
• EEDATH EEPROM/Flash data high byte Dado Banco 2 (10)
Endereço
• EEADR EEPROM/Flash address low byte
• EEADRH EEPROM/Flash address high byte Banco 3 (11)
Controle
• EECON EEPROM/Flash control byte

• EEDATA 000011110b, 10Ch, banco 2


• EEDATH 000011111b, 10Eh, banco 2 8 bits – Flash e EEPROM
8 bits – Flash e EEPROM
• EEADR 010011110b, 10Dh, banco 2 6 bits – Flash
5 bits – Flash
• EEADRH 010011110b, 10Fh, banco 2
• EECON1 010011111b, 18Ch, banco 3
25/04/2017 • EECON2 010011111b, 18Dh, banco 3 45 25/04/2017 46

2 ACESSO À MEMÓRIA 2 ACESSO À MEMÓRIA


Flash e EEPROM – Dados Flash e EEPROM – Endereço
Flash Flash

7 0 7 0 7 0 7 0

13 8 12 8

6-bit EEDATH EEDATA 8-bit 5-bit* EEADRH EEADR 8-bit

8-bit Data Bus 8-bit Data Bus


25/04/2017 47 25/04/2017 48
* Pode ser menor em outros modelos da família.

8
25/04/2017

2 ACESSO À MEMÓRIA 2 ACESSO À MEMÓRIA


Flash e EEPROM – Controle Acesso à EEPROM
Flash
EEPROM

8-bit

8-bit

8-bit
RD
WR
EECON1 WREN EEDATA EEADR EECON1
EEPGD

8-bit Data Bus


8-bit Data Bus
25/04/2017 49 25/04/2017 50

2 ACESSO À MEMÓRIA 2 ACESSO À MEMÓRIA


Acesso à flash Flash
• A EPROM é chamada de data memory.
Flash • A flash é usada, prioritariamente, como a memória de
programa.
• A arquitetura PIC não permite o uso de memória de
programa externa.
8-bit

5-bit

8-bit

8-bit
6-bit

• A flash, na condição de program memory, é endereçada


pelo 13-bit program counter e lida pelo 14-bit instruction
register.
EEDATH EEDATA EEADRH EEADR EECON1 • Neste capítulo, é abordado o uso da flash como data
memory, uma aplicação secundária de uma parcela definida
da flash, que jamais pode ser acessada por meio do PC.
8-bit Data Bus • A flash, na condição de data memory, é endereçada e
25/04/2017 51 acessada pelo 8-bit data bus.
25/04/2017 52

2 ACESSO À MEMÓRIA 2 ACESSO À MEMÓRIA


Flash Flash
0000h • Não existe ferramenta de identificação da área
alocada para program memory e da área alocada
Área alocada a programa para data memory dentro da flash.
Flash program memory
Acessível ao PC • O programa precisa fazer esta separação.
Instrução Inacessível a EEADR
de retorno Lido pelo instruction register
• A execução do programa deve impedir que o PC
a posições aponte para uma área alocada para a data memory.
anteriores • O EEADR jamais pode apontar para uma área
alocada para a program memory.
Área alocada a dados • Uma área da program memory lida como data
Flash data memory
Inacessível ao PC memory não possui significado.
Acessível a EEADR • Uma área da data memory lida como program
Lido/escrito por EEDATA
memory gera instruções imprevisíveis.
25/04/2017 1FFFh 53 25/04/2017 54

9
25/04/2017

2 ACESSO À MEMÓRIA 2 ACESSO À MEMÓRIA


Flash e EEPROM – Registradores Flash e EEPROM – Registradores
Gravação (escrita) Leitura

• EEDATA e EEDATH (EEPROM datum): Contém o dado


• EEDATA e EEDATH (EEPROM datum): Contém o
que foi lido da EEPROM ou da flash.
dado que será gravado na EEPROM ou na flash.
• EEADR e EEADRH (EEPROM address): Contém o
• EEADR e EEADRH (EEPROM address): Contém o
endereço da EEPROM ou da flash onde o dado foi lido.
endereço da EEPROM ou da flash onde o dado
• EEADR e EEADRH devem ser gravados antes da leitura da
será gravado.
EEPROM ou flash.
• EEDATA, EEDATH, EEADR, EEADRH podem ser
• EEDATA e EEDATH devem ser lidos após a leitura da
gravados em qualquer ordem.
EEPROM ou flash.

25/04/2017 55 25/04/2017 56

2 ACESSO À MEMÓRIA 2 ACESSO À MEMÓRIA


Flash e EEPROM – Registradores Flash e EEPROM – Seleção e leitura
Nome 7 0

• Flash data: 14 bits


• Flash address: 13 bits • EECON1<7>, EEPGD
• Acesso lento. • Program / Data Select bit.
• 0: EEPROM (D) – Datum (reset default)
• EEPROM data: 8 bits
• 1: Flash (PG) – Program
• EEPROM address: 8 bits
• EECON1<0>, RD
• Acesso rápido.
• Read Control bit.
• A flash é mais lenta na leitura e na gravação; • 0: Leitura concluída.
porém a diferença de rapidez é maior na gravação. • 1: Leitura em andamento.

25/04/2017 57 25/04/2017 58

2 ACESSO À MEMÓRIA 2 ACESSO À MEMÓRIA


Flash e EEPROM – Seleção Flash e EEPROM – Seleção e leitura
Modelo conceitual
Nome 7 0

EEPGD

CS CS • Durante a leitura, o endereço da memória selecionada é


buscado.
Flash • Na conclusão da leitura, o conteúdo do endereço da memória
é copiado para o registro de dados (EEDATA e EEDATH).

CS: chip select


25/04/2017 59 25/04/2017 60

10
25/04/2017

2 ACESSO À MEMÓRIA 2 ACESSO À MEMÓRIA


FLASH e EEPROM – Seleção e leitura FLASH e EEPROM – Leitura
• EECON1<0>, RD, é colocado em nível 1 por meio do comando
BSF EECON1, RD.
• No caso da flash, essa leitura não afeta o PC.
• Ao fazer RD=1, a leitura é iniciada.
• O endereçamento da flash é feito pelo PC na ocasião da
• Ao término da leitura, RD=0 automaticamente.
busca pela próxima instrução – fetch. O PC controla o
address bus da program memory. • Não é permitido fazer BCF EECON1, RD.
• O endereçamento da flash é feito por meio de outro
recurso na ocasião da gravação/debugging (ICD) e na
ocasião da leitura/escrita por meio de EEADR e EEADRH. RD
1

25/04/2017 61 25/04/2017 62
0 t

2 ACESSO À MEMÓRIA 2 ACESSO À MEMÓRIA


FLASH e EEPROM FLASH e EEPROM – Escrita
• Flash: Destinada a informações que sejam
gravadas raramente. Acesso lento. • A gravação da flash durante a execução do programa paralisa
• EEPROM: Destinada a informações que sejam a execução porque a execução da próxima instrução
gravadas frequentemente e não volátil. Acesso implicaria na leitura da flash durante sua gravação.
rápido. • A execução é liberada apenas após a conclusão da gravação.
• Nenhuma das três memórias (flash, SRAM e • A gravação da EEPROM durante a execução do programa
EEPROM) podem sofrer leitura e escrita ao não paralisa a sua execução, pois a leitura da próxima
mesmo tempo, em bits diferentes. instrução é feita na flash.
• O mesmo vale para memórias externas.
• Diferentemente, dispositivos de entrada e
saída de dados (I/O) podem ter alguns bits
como entrada e outros como saída.
25/04/2017 63 25/04/2017 64

2 ACESSO À MEMÓRIA 2 ACESSO À MEMÓRIA


FLASH e EEPROM – Escrita FLASH e EEPROM – Escrita
• EECON1<1>, WR, é colocado em nível 1 por meio do comando
• Como o processo de escrita pode levar um tempo maior do
BSF EECON1, WR.
que o ciclo de instrução e a gravação da EEPROM não
paralisa o Program Counter, é importante realizar uma rotina • Ao fazer WR=1, a escrita é iniciada.
de verificação do bit WR. • Ao término da escrita, WR=0 automaticamente.
• A execução do programa somente pode prosseguir após o • Não é permitido fazer BCF EECON1, WR.
término da gravação, quando WR=0.
• Este procedimento não é necessário na escrita da flash.
WR
;Verifica se está em processo de escrita
BSF STATUS, RP1 ;
BSF STATUS, RP0 ;Banco 3 1
BTFSC EECON1, WR ;Se o bit WR de EECON1 for 0, pular a próxima linha
GOTO $-1 ;Retorna à linha anterior até que a escrita tenha terminado

25/04/2017 65 25/04/2017 66
0 t

11
25/04/2017

2 ACESSO À MEMÓRIA 2 ACESSO À MEMÓRIA


FLASH e EEPROM – Escrita FLASH e EEPROM – Escrita
• EECON2, muito embora seja acessado por um
endereço da SRAM (18Dh), ele não corresponde a um
• Para proteger as memórias contra escrita acidental, é
registrador da SRAM.
necessário colocar o código de escrita antes da escrita.
• EECON2 não é um registrador; ele não pode ser lido e
• O código deve ser enviado para o registrador EECON2.
um dado gravado nele não fica registrado.
• Código: 55h – AAh.
• Dados enviados para EECON2 apenas são comparados
• 55h = 01010101b com a sequência 55h – AAh.
• AAh = 10101010b • O acesso a EECON2 por meio do endereço 18Dh existe
apenas para tornar a programação mais simples.

25/04/2017 67 25/04/2017 68

2 ACESSO À MEMÓRIA 2 ACESSO À MEMÓRIA


FLASH e EEPROM – Escrita FLASH e EEPROM – Escrita
Nome 7 0
8-bit Data Bus • O registrador para
AAh é acionado dois
• EECON1<2>, WREN
ciclos de instrução
mais tarde do que o • Write Enable bit
para 55h. • 0: Desabilitado (reset default).
BSF STATUS, RP1 • 1: Habilitado.
1 para 55h 1 para AAh BSF STATUS, RP0 • EECON1<3>, WRERR
BCF EECON1, EEPGD
REG REG BSF EECON1, WREN • Write Error bit
MOVLW 0x55
• 0: Não houve erro.
1-bit 1-bit MOVWF EECON2
MOVLW 0xaa • 1: Houve erro.
WREN MOVWF EECON2
BSF EECON1, WR
25/04/2017 BCF EECON1, WREN 69 25/04/2017 70
Inicia escrita

2 ACESSO À MEMÓRIA 2 ACESSO À MEMÓRIA


EEPROM – Escrita – Proteção contra interrup. FLASH e EEPROM – Erro
BSF STATUS, RP1
BSF STATUS, RP0 • Causas:
BCF EECON1, EEPGD • /MCLR reset (via pino 1 – Master Clear)
BSF EECON1, WREN • É preciso usar
MOVLW 0x55 uma proteção • WDT reset
MOVWF EECON2 contra interrupção.
MOVLW 0xaa • Não há verificação de erro pelo uso de endereço inválido.
Não
interromper MOVWF EECON2 • Havendo erro, WRERR =1.
BSF EECON1, WR
BCF EECON1, WREN
Desabilita • Não é permitido fazer BSF EECON1, WRERR.
interrupção
• EECON1<3> recebe “1” pela PIC ao identificar o erro.
BCF INTCON, GIE
Proteção • EECON1<3> recebe “0” manualmente.
Área
contra XXXXXXXXX
protegida • BCF EECON1, WRERR.
interrupção
BSF INTCON, GIE • Esse comando é dado após a ciência do evento.
Reabilita
25/04/2017 interrupção 71 25/04/2017 72

12
25/04/2017

2 ACESSO À MEMÓRIA 2 ACESSO À MEMÓRIA


FLASH e EEPROM – Interrupção FLASH e EEPROM – Interrupção
• Quando a escrita é concluída com sucesso, uma solicitação
de interrupção é realizada. • EEIE: EEPROM/flash Write Operation Interrupt Enable bit
• EEIF: EEPROM flash Write Interrupt Flag bit • PIE2<7> (Peripheral Interrupts Enable bits 2)
• PIR2<4> Peripheral Interrupts 2 • 1: Habilita interrupção EE.
• 0: Não houve um WR ou houve falha no WR (reset default). • 0: Desabilita interrupção EE.
• 1: Houve um WR.
• Após um WR, EEIF deve ser zerado manualmente.
• PIR2 000001101b, 0Dh, banco 0
• PIE2 010001101b, 8Dh, banco 1
• Não é permitido fazer BSF PIR2, EEIF.
• PIR2<4> recebe “1” em WR.
• PIR2<4> recebe “0” manualmente.
• BCF PIR2, EEIF.
25/04/2017 73 25/04/2017 74
• Esse comando é dado após a ciência do evento.

2 ACESSO À MEMÓRIA 2 ACESSO À MEMÓRIA


FLASH – Leitura e escrita FLASH – Gravação
• Não é comum que se leia ou escreva na flash por meio • Um exemplo de programa que grava a flash durante a
da execução do programa. execução é o gravador de número de série, ou de
• A leitura usual da flash, em tempo de execução, é feita endereço global, nome do distribuidor, etc
por meio do Program Counter, do Instruction Register e • Nem sempre é conveniente gravar tais dados na
do Instruction Decoder. EEPROM, pois eles são gravados uma única vez.
• A leitura usual da flash, fora de execução, é feita por • A PIC não possui PROM para que dados sejam
meio de software e hardware específicos para leitura e gravados irreversivelmente, e a EEPROM é usada para
cópia das memórias da PIC (flash, SRAM e EEPROM) dados que sejam gravados frequentemente.
– ICD. • Uma palavra de 14 bits da flash pode ser usada para
• A gravação usual da flash é feita por meio de software e armazenar 2 dígitos ASCII (7 bits).
hardware específicos para gravação do programa na
PIC. As outras memórias também podem ser gravadas.
25/04/2017 75 25/04/2017 76

2 ACESSO À MEMÓRIA 2 ACESSO À MEMÓRIA


FLASH – Leitura Memória externa

• Outro exemplo de uso da flash é quando a quantidade


de dados a ser gravada excede a capacidade de
armazenamento da EEPROM. • O acesso à memória externa (quando houver) deve ser
• Mais um exemplo de uso da flash é quando o tamanho feito através das portas paralelas (A,B,C,D,).
das palavras de dado a serem gravadas é maior do • O controle da memória externa deve ser feito através
que 8 bits. O tamanho máximo é de 14 bits. de bits obtidos também através das portas paralelas.
• A parte gravada da flash com dados não é considerada
program memory, mas, sim, data memory.

25/04/2017 77 25/04/2017 78

13
25/04/2017

2 ACESSO À MEMÓRIA 3 CLOCK


Flash Seleção
Modelo conceitual
Address
S1 S0 Uso PC 13-bit
0 0 Busca (fetch) EEADR MUX
31
0 1 Comando RD ou WR ICD2
Seleção
1 0 ICD2
1 1 –
Data in
Não usado 14-bit
CLOCK
Flash
EEDATA MUX
31
ICD2
Seleção

Data out
Instruction Register 14-bit
EEDATA DEMUX
13
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

• O relógio (clock) é o “regente da orquestra”. • Embora o regente de uma orquestra possa


• Todos os dispositivos operam a uma alterar o andamento da música, o relógio
frequência determinada pelo clock. em sistemas digitais não pode fazer isso.

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

• OSC1: Oscillator crystal input


• OSC2: Connects to crystal or resonator
• CLKIN: External clock source input
• CLKOUT: Oscillator crystal output

OSC1/CLKIN • O tipo de uso determina o nome dos pinos.


OSC2/CLKOUT

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

Oscilador Pino 13 Pino 14


RC CLKIN CLKOUT
HS OSC1 OSC2
XT OSC1 OSC2
(2):
Ausente na LP OSC1 OSC2
PIC16F877. Externo OSC1 OSC2

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

Este slide não cai na prova.


Circuito RC série Circuito RC série

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

Carga plena Descarga plena • O conceito de carga/descarga plenas, são,


VC(t) VC(t) matematicamente, de obtenção impossível.
VSOURCE V0 • Na prática, esse conceito definido como a obtenção
de uma tensão no capacitor cuja leitura, nos
instrumentos de medida disponíveis, é constante.
• Na situação plena, as variações temporais estão
abaixo da resolução dos instrumentos de medida.
t t
• Em outras palavras, o nível de variação é
• t =  [s] comparável ou menor do que os níveis de ruído
• Carga plena: VC = VS. incorporados no sistema.
• Descarga plena: VC = 0V.
25/04/2017 95 25/04/2017 96

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 RC é 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.

25/04/2017 99 25/04/2017 100

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

Este slide não cai na prova.


Exemplo para curva de magnetização

Correta Invertida

Borda Borda Borda Borda


negativa positiva positiva negativa

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

• B: Vetor densidade de fluxo magnético [Wb/m2].


• H: Vetor intensidade de campo magnético [A/m].
25/04/2017 103 25/04/2017 104

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

mínimo período de oscilação. • Casamento de impedância.


• O tempo de transição entre VR e VF • Gerador de atraso.
VL VIN determina a máxima frequência de
VF VR comutação.
VIN

25/04/2017 105 25/04/2017 106

3 CLOCK 3 CLOCK
VIN Buffer ST VIN VOUT Histerese digital
VOUT

Buffer ST NOT ST

VIN

VOUT Exemplos

25/04/2017 107 25/04/2017 108


http://pcbheaven.com/wikipages/images/theschmitttrigger_1261498396.png

18
25/04/2017

3 CLOCK 3 CLOCK
Histerese digital Oscilador RC

• Portas lógicas com efeito ST não • Um oscilador RC puramente analógico gera


possuem diferença na etapa lógica. uma saída em onda triangular.
• A diferença está no buffer, parte • A porta lógica garante uma saída em níveis
integrante de toda porta lógica. discretos.
• As portas ST possuem, no estágio • A saída triangular torna-se uma onda quadrada.
de saída, um buffer ST. • Os níveis de tensão alto e baixo também são
determinados e garantidos.
• Uma histerese na porta lógica é fundamental
para que a frequência resultante não seja
Exemplos matematicamente infinita.

25/04/2017 109 25/04/2017 110

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

25/04/2017 111 25/04/2017 112

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

Também poderia ter


um potenciômetro

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

• A conexão CLKOUT fornece f OSC/4.


• A conexão CLKOUT fornece f CY.
CLKIN • CLKOUT está em sincronia com as instruções.
• CLKOUT pode ser usado para que outros
circuitos operem em sincronia com as
instruções da PIC.
CLKOUT • O modo power down não desliga o oscilador
RC externo. Periféricos que não dormem
continuam funcionando.

25/04/2017 115 25/04/2017 116

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 25C.
• 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).

25/04/2017 119 25/04/2017 120

20
25/04/2017

3 CLOCK 3 CLOCK
LP/XT/HS LP/XT/HS
Oscilador interno Oscilador interno

• Aplicações que requerem boa precisão na oscilação: Oscilador Frequência


• Comunicação serial. LP 32kHz a 200kHz
• Controle integral e controle derivativo. XT 200kHz a 4MHz
• Sistema integrado com computador. HS 4MHz a 20MHz
• Sistema com relógio HH/MM/SS.
• Frequência acima da máxima permitida: Overclock.
• Frequência abaixo da mínima permitida: Underclock.
• Overclock e underclock podem gerar comportaento
imprevisível.

25/04/2017 121 25/04/2017 122

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

• XTAL: Cristal • Capacitâncias maiores tornam o oscilador mais estável.


• RS: Resistor Série. • Capacitâncias menores fazem o oscilador iniciar mais
• RF: Resistor de Feedback (2M a 10M). rapidamente.
25/04/2017 123 25/04/2017 124
• Alguns modelos possuem um terceiro buffer na linha de baixo.

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

Oscilador f máx T (mín)


LP 200kHz 5s
XT 4MHz 250ns
25/04/2017 HS 20MHz 50ns 127 25/04/2017 128

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

quando já se tem a onda quadrada pronta.


• A mesma fonte de clock pode ser MCU
3
compartilhada com diversos dispositivos.
• OSC2 permanece em tri-state. MCU
4
• OSC2 pode agir como uma antena .
25/04/2017
• OSC2 pode ser ligado ao terra por meio 129 25/04/2017 130
de um resistor para evitar ruídos.

3 CLOCK 3 CLOCK
LP/XT/HS Bordas
Este slide não cai na prova.

Exemplos de oscilador externo a cristal


Paralelo
• As instruções iniciam na borda de descida de CLKOUT.
• CLKOUT inicia na borda de subida de OSC1.
Série

OSC1

OSC1 OSC1

CLKOUT

• Como os bufferes não são usados, a


escolha entre LP, XT ou HS é irrelevante. Q1 Q2 Q3 Q4
25/04/2017 131 25/04/2017 132

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. PCPC+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.

25/04/2017 137 25/04/2017 138

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

25/04/2017 139 25/04/2017 140

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.

25/04/2017 145 25/04/2017 146

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

• O instante da energização do chip apresenta um alto pico


de corrente elétrica, sobrecarregando a fonte de tensão.
• Um capacitor cerâmico externo em paralelo entre os pinos
VDD e VSS deve ser usado para suavizar esse pico. Pino 32
• O retardo de 72ms por PWRT serve para evitar que picos
no consumo de energia elétrica sobrecarreguem a fonte de
tensão quando vários chips são usados no mesmo circuito.
• O retardo também protege o chip contra danos provocados
por oscilações de alta frequência no sinal VDD. Pino 32

25/04/2017 149 25/04/2017 150

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).

25/04/2017 151 25/04/2017 152

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

25/04/2017 155 25/04/2017 156

26
25/04/2017

4 RESET 4 RESET
Eventos do POR – situação 3 Exemplos
Pino 32

Pino 1

• Nestes três exemplos, é possível


observar que as três temporizações são
72ms gatilhadas pelo evento da energização do
sistema e não do sinal no pino /MCLR.

Início

Retardo

25/04/2017 157 25/04/2017 158

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.

25/04/2017 167 25/04/2017 168

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

Assíncrono • A terminologia “síncrono” pode assumir dois


significados diferentes neste contexto.
• Significado usado em circuitos digitais:
USAREMOS
Todos os FF’s operam à mesma frequência.
• Significado usado em contadores
Síncrono integrados em MCU´s: A contagem ocorre à
mesma frequência de instruções da MCU.
• Nos slides seguintes, será adotado o
segundo significado.

25/04/2017 171 25/04/2017 172

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

25/04/2017 179 25/04/2017 180

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

25/04/2017 181 25/04/2017 182

5 TEMPORIZAÇÃO 5 TEMPORIZAÇÃO
Prescaler configurável 1:2, 1:3, 1:4 Contador postscaler
Este slide não cai na prova.

• Aplicação exclusiva para temporizadores.


• Não possui significado para contadores.
• Circuito que multiplica por um inteiro o tempo para a
sinalização de uma temporização completa.
• É um contador digital.
1:4 • O término da contagem postcaler é chamado de /TO.
1:3 • Quanto maior o postscaler ratio, mais tempo demora para o
1:2 envio do sinal /TO.
• É um divisor de frequência de /TO.
• É um contador de “n” bits acoplado ao bit mais significativo
do temporizador principal.
• Nem sempre o contador prescaler usa FF’s. • “n” é a razão (ratio) do postscaler (1:n).
25/04/2017 183 25/04/2017 184
• Pode ser usado em temporizador analógico.

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.

25/04/2017 185 25/04/2017 186

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

25/04/2017 189 25/04/2017 190


Vide exemplos

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

• Funcionam mesmo no modo power down. • Q1: Decodificação da instrução.


• A temporização é feita por um circuito RC. • Q2: Leitura do dado da instrução.
• A temporização não é precisa. • Q3: Processamento da instrução.
• Oscilator start-up timer é digital (1024 períodos). • Q4: Escrita do dado resultante.
• Não confundir com a saída Q dos FF’s.
25/04/2017 193 25/04/2017 194

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

PORTB 006h TRISB 086h PORTB 106h TRISB 186h


PORTC 007h TRISC 087h 107h 187h
PORTD 008h TRISD 088h 108h 188h
PORTE 009h TRISE 089h 109h 189h
PCLATH 00Ah PCLATH 08Ah PCLATH 10Ah PCLATH 18Ah
INTCON 00Bh INTCON 08Bh INTCON 10Bh INTCON 18Bh
PIR1 00Ch PIE1 08Ch EEDATA 10Ch EECON1 18Ch
PIR2 00Dh PIE2 08Dh EEADR 10Dh EECON2 18Dh
TMR1L 00Eh PCON 08Eh EEDATH 10Eh 18Eh
TMR1H 00Fh 08Fh EEADRH 10Fh 18Fh
T1CON
TMR2
T2CON
SSPBUF
010h
011h
012h
013h
SSPCON2
PR2
SSPADD
090h
091h
092h
093h
110h 190h

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

• Watchdog Timer (WDT). • O WDT pode ser implementado em hardware ou em software.


• WDT: Temporizador com reset de • Sistemas operacionais usam WDT em software.
emergência. • Um programa pode entrar em um loop infinito sem dar
• Configuração de 3 bits, 8 opções. oportunidade a interrupções.
• O reset de emergência permite • No MS-Windows™, o WDT identifica que um programa
retomar o controle da MCU em parou de responder e dá oportunidade, ao usuário, de
caso de falhas. interromper a execução infinita.
• Quando implementado em software, pode existir um WDT
para cada processo em execução.
• Tanto em software como em hardware, é importante que o
relógio WDT seja independente para que não pare com um
25/04/2017 200
25/04/2017 199 travamento.

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.

25/04/2017 201 25/04/2017 202

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 PC0000b. • NOT_TO Time-Out -Sim
• O WDT wake-up faz PCPC+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.

25/04/2017 203 25/04/2017 204

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

25/04/2017 205 25/04/2017 206

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

Os bits 6 e 7 têm outras aplicações.

25/04/2017 http://leakclub.com/w p-content/uploads/2015/11/Animals-Conjoined-Twins-b.jpg


207 25/04/2017 208

6 WDT 6 WDT
WDT/TMR0 – Configuração WDT/TMR0 Postscaler/Prescaler

• WDT/TMR0 são configurado em Option_Reg. • Contador Postscaler: 8 bits de uso de WDT*.


• Esse nome se dá porque são configuradas opções em • Contador Prescaler: 8 bits de uso de TMR0.
outros dispositivos.
• Contador Postscaler: Multiplica o tempo de /TO.
• Esse nome foi escolhido porque, antigamente, nos primeiros
• Contador Prescaler: Multiplica o tempo do
modelos de MCU PIC, os periféricos eram poucos, eram
instruction cycle para TMR0.
necessários poucos SFR’s para configurações.
• Já TMR1 e TMR2 possuem SFR’s de configuração
específicos.
• Somente um contador (WDT ou TMR0) pode usar o ratio.
• O contador que não está usando o ratio possui razão 1:1.

25/04/2017 209 25/04/2017 210


* Somente 7 bits são usados

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.

25/04/2017 211 25/04/2017 212

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

Ratio Bits* Cont. Multipl. Tempo


1:1 0 RC 001 018ms
1:2 1 0 a 001 002 036ms t
1:4 2 0 a 003 004 072ms
1:8 3 0 a 007 008 144ms t
CLRWDT /TO
1:16 4 0 a 015 016 288ms 1:1
1:32 5 0 a 031 032 576ms CLRWDT /TO
1:64 6 0 a 063 064 1,1s 1:2
1:128 7 0 a 127 128 2,3s Reset default

• *Bits do postscaler; quantidade de flip-flop’s. t

• 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
21 do TMR0 pelo WDT
1 bit

81
1 bit
Option_Reg <2:0>
=0
Option_Reg <3>
0: TMR0
1: WDT

21
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

• Q0 – Q7: Bits do contador postscaler.


/TO
25/04/2017 219 25/04/2017 220
• Inacessíveis ao programa assembler.

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
81
1:16 1:32
Q3 COUNTER 1:64

Q4
Q5
Q6
1:32
1:64
1:128
1:128
1:256
81
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

SLEEP 00 0000 0110 0011 0083


• Como, em /TO, o WDT provoca um reset, não precisa CLRWDT 00 0000 0110 0100 0084

solicitar interrupção na execução do programa, pois o reset já


interrompe a execução. • CLRWDT – Clear Watchdog timer
• Diferentemente de uma interrupção normal, não há • Reinicia o temporizador WDT.
possibilidade de retorno à posição original do programa, pois • Reinicia o contador postscaler (00h) (se PSA=1).
o reset não realiza um push.
• Afeta os bits NOT_PD e NOT_TO do status register.
• Não há interesse em retornar à posição original porque
subentende-se que a execução travou e o reset foi
• NOT_PD = 1 Não houve power down (reset default).
emergencial; retornar à posição original retoma o travamento. • NOT_TO = 1 Não houve time-out (reset default).

25/04/2017 223 25/04/2017 224

6 WDT 6 WDT
SLEEP Wake-up
Instrução Nibble 3 Nibble 2 Nibble 1 Nibble 0 opcode

SLEEP 00 0000 0110 0011 0083


CLRWDT 00 0000 0110 0100 0084

• SLEEP – Hibernação • Faz a MCU “despertar-se”.


• Coloca a MCU em modo de baixo consumo – power down. • Faz a MCU sair do modo power down.
• O WDT é reiniciado. • Três eventos podem provocar um wake-up:
• O postscaler do WDT é reiniciado (00h) (se PSA=1). • Comanto Reset através do pino 1 – /MCLR – Master Clear.
• O postscaler ratio não é alterado. • /MCLR atua no bloco Low Voltage Programming.
• Afeta os bits NOT_PD e NOT_TO do status register. • WDT wake-up.
• NOT_PD = 0 Houve power down. • Interrupção (teclado, mouse, etc) (nem todas as
interrupções provocam wake-up.
• NOT_TO = 1 Não houve time-out (reset default).

25/04/2017 225 25/04/2017 226

6 WDT 6 WDT
Fatos que reiniciam o contador postscaler WDT/TMR0

• WDT reset (somente se PSA=1)


• WDT wake-up (somente se PSA=1)
• Instrução CLRWDT (somente se PSA=1)
• Alteração em <PS2:PS0> (somente se PSA=1)
RC
TMR0 Prescaler
• Instrução SLEEP (somente se PSA=1)
WDT Postscaler
• Alteração no bit PSA (de 0 para 1)

25/04/2017 227 25/04/2017 228


/TO

38
25/04/2017

6 WDT 6 WDT
WDT/TMR0 – PSA=0 WDT/TMR0 – PSA=1

=0 =1

TMR0 Prescaler WDT Postscaler

=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

• TMR0: Timer 0 Module Register.


• Tal como acontece em TMR1 e TMR2, uma escrita
• Registrador 000000001b, 001h, banco 0
em TMR0 provoca a reiniciação do contador
prescaler no próximo TCY caso PSA=0. • Registrador 100000001b, 101h, banco 2
• Registrador X00000001b
• A alteração do prescaler ratio também provoca a
reiniciação do contador prescaler no próximo TCY. • Option_Reg: Option Register.
• Opções de ratio : 1:1, 1:2, 1:4 a 1:256. • Registrador 010000001b, 081h, banco 1
• Registrador 110000001b, 181h, banco 3
• Registrador X10000001b

25/04/2017 233 25/04/2017 234

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

25/04/2017 237 25/04/2017 238


Os bits 6 e 7 têm outras aplicações.

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
91 1:64
1:128
1:256
91
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 21 • Não há como alterar TMR0 sem a reiniciação do
COUNTER 81
MUX contador prescaler.
MUX
• O mesmo vale para TMR1 e para TMR2.

8-bit O0
TMR0 O7

25/04/2017 243 244


Vide exemplos

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

25/04/2017 247 25/04/2017 248

7 TIMER 0 7 TIMER 0
Modos de operação Modos de operação
Temporizador

• Dois modos de operação:


(6)
• 0: Temporizador (Timer) Contador
• 1: Contador (Counter) (reset default)

• 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

• Option_Reg<4>, T0SE: TMR0 Source Edge Select bit. (6)


Contador
• 0: Borda positiva (01) (rising edge).
• 1: Borda negativa (10) (falling edge). Reset default
• Configuração relevante somente para relógio externo • T0SE=0: rising edge
(modo contador). • T0SE=1: falling edge (reset default)

• Uma porta XOR com uma entrada de dados e uma de


controle age como uma porta NOT habilitável.
• Se o controle vale zero, a função NOT está desabilitada.
25/04/2017 253 25/04/2017 254
• Se o controle vale um, a função NOT está habilitada.

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
2TOSC
podem acontecer, somente, em Q4.

CLKIN t
Mínimo tempo alto
Mínimo tempo baixo

• f CKLIN  4f OSC


25/04/2017 • f CKLIN  f CY 259 25/04/2017 260

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

25/04/2017 261 25/04/2017 262

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.

25/04/2017 263 25/04/2017 264

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.

25/04/2017 265 25/04/2017 266


Vide exemplos

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
21
• 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) 21 • 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

Exemplo para prescaler ratio de 1:2


NT0+1

NT0

25/04/2017 269 25/04/2017 270


Escrita de NT0
NT0: New TMR0 value NT0: New TMR0 value

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

NT0: New TMR0 value


25/04/2017 271 25/04/2017 272
Escrita de 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

25/04/2017 275 25/04/2017 276

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

• Escrita em Option_Reg<2:0>, <PS2:PS0>. passo


• A alteração do prescaler ratio implica na perdido

imediata reiniciação do contador prescaler.


• O contador prescaler é reiniciado
Escrita em
automaticamente. Option_Reg<2:0>, <PS2:PS0>
• O contador TMR0 não é reiniciado.
• O passo de contagem fragmentado é perdido.
Contador prescaler

25/04/2017 277 25/04/2017


1:4 fracionado 1:8 278
reset

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 2T
Escrita em PS2, PS1, PS0 ou em PSA.
• 1: T0IF habilitado.
Rampa interrompida do contador prescaler
fracionado

TMR0
t

25/04/2017 279 25/04/2017 280

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.

25/04/2017 281 25/04/2017 282

47
25/04/2017

8 TIMER 1 8 TIMER 1
Escrita Registradores

• TMR1: Timer 1 Module Register.


• Tal como acontece em TMR0 e TMR2, uma escrita • TMR1L (low): Registrador 000001110b, 00Eh, banco 0
em TMR1 provoca a reiniciação do contador • TMR1H (high): Registrador 000001111b, 00Fh, banco 0
prescaler no próximo TCY. • T1CON: Timer 1 Control Register.
• A alteração do prescaler ratio também provoca a Registrador 000010000b, 010h, banco 0
reiniciação do contador prescaler no próximo TCY.
• Opções de ratio: 1:1, 1:2 ou 1:4 ou 1:8. • Dois registradores de 8 bits: TMR1H e TMR1L.
• TMR1L e TMR1H podem ser lidos e alterados.
• TMR1L e TMR1H não podem sofrer uma escrita no
mesmo ciclo, mas o incremento natural pode
alterá-los no mesmo ciclo.
25/04/2017 283 25/04/2017 284

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.

• 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. 285 25/04/2017 286

8 TIMER 1 8 TIMER 1
Período T1CON

• Timer 1 Control Register.


• T1CON<0>, TMR1ON: TMR1 On bit.
• 0: Desligado (reset default).
• 1: Ligado.
• Estando desligado, ocorre menor consumo de energia.

25/04/2017 287 25/04/2017 288

48
25/04/2017

8 TIMER 1 8 TIMER 1
Prescaler ratio Prescaler MUX

TCY Base de tempo


Modo temporizador

Q0
• <T1CKPS1:T2CKPS0>: Timer1 Clock Prescale Select bits.
Contador
Q1
prescaler
<T1CKPS1:
T1CKPS0> Ratio Q2

00 1:1 1:20 Reset default


01 1:2 1:21
10 1:4 1:22
• Q0 – Q2: Bits do contador prescaler.
11 1:8 1:23
• Inacessíveis ao programa assembler.
25/04/2017 289 25/04/2017 290

8 TIMER 1 8 TIMER 1
Prescaler MUX Prescaler MUX
Modelo conceitual Modelo conceitual
T1CKPS1
T1CKPS0 TCY
TCY
0 21
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> 41 1:2 101
1:1
Ratio MUX Sel 1-bit 1:4 110
41 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.

293 25/04/2017 294


Vide exemplos

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

• T1CON<2>, /T1SYNC: TMR1 Ext. Clock Input Sync. Sel. bit.


• 0: Sincronizar (reset default) • T1CON<3>, T1OSCEN: TMR1 Oscillator Enable Control bit.
• 1: Não sincronizar • 0: Desligado (externo) (reset default)
• No MPLAB, o nome é NOT_T1SYNC. • 1: Habilitado (interno)
• Este bit não tem efeito no modo temporizador. • Este bit não tem efeito no modo temporizador.

TMR0
TMR1

25/04/2017 297 25/04/2017 298

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)

OSC2 (14) T1OSCEN=1

Oscilador para o relógio do TMR1 T1OSCEN=1

T1OSO (15) T1OSO


T1OSI

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.

25/04/2017 303 25/04/2017 304

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

• Por não desligar no modo power-down, a informação da


hora não é perdida em modo de economia de energia.
• O chip possui um sinal de relógio proveniente de um
par RC, não é um sinal confiável, mas isso não é
problema, pois a base de tempo para o contador das
horas é o TMR1, que é oscilado por um cristal.
• O modo assíncrono é necessário porque o circuito de
sincronia promoveria atrasos na marcação da hora,
decorrentes da formação de degraus mais demorados
em TMR1 (vide explicação sobre a sincronia do TMR0).

25/04/2017 307 25/04/2017 308

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.

25/04/2017 309 25/04/2017 310

8 TIMER 1 8 TIMER 1
Gravação começando por L – Exemplo de erro Procedimento de gravação

• Deseja-se gravar TMR1H=5Ch e TMR1L=FFh.


• Inicialmente, TMR1H=12h e TMR1L=3Bh. • Zerar TMR1L para garantir que não haverá
• Primeiramente, se grava TMR1L=FFh. overflow em TMR1L e que TMR1H não
• Em seguida, se grava TMR1H=5Ch. incrementará antes que TMR1L seja gravado.
• Porém, antes dessa última gravação, o overflow em • Gravar TMR1H.
TMR1L incrementa TMR1H, que, agora, vale 5Dh. • Gravar TMR1L.
• O valor gravado, então, é de 5C00h e não de 5CFFh.

25/04/2017 311 25/04/2017 312

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.

• PIR1: Peripheral Interrupts bits 1.


• PIR1<0>, TMR1IF: TMR1 Overflow Interrupt Flag bit. TIMER 2
• 0: Não houve overflow (reset default).
• 1: Houve overflow (TMR1IF não retorna a zero automaticamente).
• PIE1: Peripheral Interrupts Enable bits.
• PIE1<0>, TMR1IE: TMR1 Overflow Interrupt Enable bit.
• 0: TMR1IF desabilitado (reset default).
• 1: TMR1IF habilitado.
25/04/2017 315 25/04/2017 316

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.

25/04/2017 317 25/04/2017 318

53
25/04/2017

9 TIMER 2 9 TIMER 2
Registradores Onda dente-de-serra
PR2

• PR2 Timer2 Module’s Period Register


• Registrador 010010010b, 092h, banco 1
• TMR2 Timer2 Module’s Register 000d 00h t

• Registrador 000010001b, 011h, banco 0


• Um contador crescente pode ser interpretado como um
• T2CON Timer2 Control Register
gerador de onda dente-de-serra.
• Registrador 000010010b, 012h, banco 0
• 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 319 • O período da rampa é o tempo de uma contagem até o match.
25/04/2017 320

9 TIMER 2 9 TIMER 2
Período Período

• TOSC: Período do relógio.


• TCY: Período de instrução.
• TSTEP: Tempo do passo de contagem.
• TRAMP: Tempo de uma contagem completa.

25/04/2017 321 25/04/2017 322

9 TIMER 2 9 TIMER 2
Período T2CON
Reset default: PR2 = ffh

• Timer 2 Control Register.


• T2CON<2>, TMR2ON: TMR2 On bit.
• 0: Desligado (reset default).
• 1: Ligado.
• Estando desligado, ocorre menor consumo de energia.

25/04/2017 323 25/04/2017 324

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 21 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 41 1:4 1010
Sel: <T2CKPS1:T2OUTPS0> 1-bit 1:16
1011
1:1 1100
41 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

• O mesmo sinal usado para reiniciar o contador


prescaler é usado para incrementar TMR2.
• Toda alteração forçada em TMR2 é acompanhada
de um reset no contador prescaler.
• Não há como alterar TMR2 sem a reiniciação do
contador prescaler.
• O mesmo vale para TMR0 e para TMR1.

329 25/04/2017 330

55
25/04/2017

9 TIMER 2 9 TIMER 2
Contador postscaler Contador postscaler
Modelo conceitual
TCY  Prescaler ratio
Match

• <TOUTPS3:TOUTPS0>: Timer2 Output Postscaler Select bits. 0 0

<T2OUTPS3: 8-bit 4-bit


Ratio 7 POSTSCALER 3 Bit set
T2OUTPS0> TMR2 Reset
COUNTER 4-bit
0000 1:01 TMR2IF
0001 1:02 COMP
0010 1:03 TCY
0011 1:04 REG
0100 1:05
0101 1:06 <T2OUTPS3: 0
4-bit
0
0110 1:07
0111 1:08 T2OUTPS0> 3 REG 3
1000 1:09
1001 1:10
1010 1:11
1011
1100
1:12
1:13
• Foi omitido o circuito gerador do sinal de match.
25/04/2017
1101 1:14
331 • O match é obtido pela comparação com PR2.
25/04/2017 332
1110 1:15
1111 1:16

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

• Sem PR2, TMR2 conta como qualquer outro contador.


• Ao atingir o valor máximo (FFh), um reset é dado no
8 bits próximo ciclo.
• Esta situação é obtida configurando PR2 = FFh.
8 bits • Após um reset na MCU, PR2 = FFh (reset default).

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

25/04/2017 337 25/04/2017 T 338

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

25/04/2017 343 25/04/2017 344

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

25/04/2017 * Exceto modo contador síncrono 349 25/04/2017 350


**Visto mais adiante

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

Você também pode gostar