1
Parte 3
RECURSOS
15/12/2016 15/12/2016 21. INTERRUPÇÕES
2. ACESSO À MEMÓRIA
3. CLOCK
4. RESET
5. TEMPORIZAÇÃO
6. TIMER 0
7. TIMER 1
8. TIMER 2
INTERRUPÇÕES
1
3 15/12/2016INTERRUPÇÕES
INTERRUPÇÕES
1
4 15/12/2016Definiçã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. • 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.
INTERRUPÇÕES
1
5 15/12/2016Flags de interrupção
• Avisam que uma solicitação de interrupção foi realizada, ainda que o pedido não seja atendido. • A mudança de 0 para 1 é feita automaticamente
na ocorrência de um evento determinado. • 0: Não houve o evento (reset default).
• 1: Houve o evento.
• 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. • A mudança é feita por BCF REG,interrupt_flag.
INTERRUPÇÕES
1
6 15/12/2016
INT
Interrupção externa – INT
• Um pino para interrupção externa. • O pino deve ser configurado como entrada. • Configurar TRISB<0>=1 (BSF TRISA,RB0). • Pino com efeito shimitt trigger.
• O ST protege a entrada contra oscilações de alta frequência.
INTERRUPÇÕES
1
7 15/12/2016
• Para configurar a interrupção externa, é preciso programar o registrador OPTION_REG (081h, 181h). • OPTION_REG<6>, <INTEDG>
• INTEDG: Interrupt Edge Select bit. • 0: Interrupção na borda de descida.
• 1: Interrupção na borda de subida (reset default). • Registrador 010000001b, 081h, banco 1 • Registrador 110000001b, 181h, banco 3 • Registrador X10000001b
Interrupção externa – INT
INTERRUPÇÕES
1
8 15/12/2016 Interrupt-on-change INT Interrupt-on-changeInterrupção por mudança em PORT B
• Estes pinos devem ser
configurados como entrada. • TRISB<4>=1 (BSF TRISA,RB4). • TRISB<5>=1 (BSF TRISA,RB5). • TRISB<6>=1 (BSF TRISA,RB6). • TRISB<7>=1 (BSF TRISA,RB7).
INTERRUPÇÕES
1
9 15/12/2016• Os quatro bits de PORTB geradores de interrupção por mudança podem ser usados como interrupções externas. • Sua limitação, porém, é que o pedido é o mesmo para os
quatro pinos.
• Qualquer mudança no nibble gera a interrupção. • Se for necessário distinguir os quatro pinos, é preciso
que o programa verifique os quatro bits dentro de PORTB através das instruções BTFSC ou BTFSS.
Interrupção por mudança em PORT B
INTERRUPÇÕES
1
10 15/12/2016
Interrupção por mudança em PORT B
Rotina de interrupção Rotina de identificação do bit GOTO RB4 RB5 RB6 RB7
• Exemplo de programa que identifica uma borda de subida em RB. • Mais de um bit podem sofrer a
borda ao mesmo tempo.
• A ordem por meio da qual os quatro
bits são checados determina a prioridade dos bits. CLRF PORTB
. . BTFSC PORTB,RB4 GOTO INTRB4 BTFSC PORTB,RB5 GOTO INTRB5 BTFSC PORTB,RB6 GOTO INTRB6 BTFSC PORTB,RB7 GOTO INTRB7 . . BTFSCPORTB,RB4 GOTO INTRB4 BTFSCPORTB,RB5 GOTO INTRB5 BTFSCPORTB,RB6 GOTO INTRB6 BTFSCPORTB,RB7 GOTO INTRB7 . .
INTERRUPÇÕES
1
11 15/12/2016• Um pulso no pino INT ou em PORTB não pode ser muito estreito.
• Em um pulso muito estreito, a largura pode não ser percebida pelos TCY’s. • É necessário que essa mudança seja
percebida entre um TCYe o próximo.
Pulso nos pinos
INTERRUPÇÕES
1
12 15/12/2016INTCON
INTCON • Registrador 000001011b, 00Bh, banco 0 • Registrador 010001011b, 08Bh, banco 1 • Registrador 100001011b, 10Bh, banco 2 • Registrador 110001011b, 18Bh, banco 3 • Registrador XX0001011b13 15/12/2016
INTCON
• INTCON<7>, <GIE>
• Global Interrupt Enable bit.
• 0: Desabilita interrupções (reset default). • 1: Habilita interrupções.
• INTCON<6>, <PEIE>
• Peripheral Interrupt Enable bit.
• 0: Desabilita interrupções periféricas (reset default). • 1: Habilita interrupções periféricas.
14 15/12/2016
INTCON
• INTCON<2>, <T0IF>
• TMR0 Overflow Interrupt Flag bit.
• 0: Não houve interrupção por overflow (reset default). • 1: Houve interrupção por overflow.
• INTCON<5>, <T0IE>
• TMR0 Overflow Interrupt Enable bit.
• 0: Desabilita interrupção por overflow (reset default). • 1: Habilita interrupção por overflow.
INTERRUPÇÕES
1
15 15/12/2016INTCON
• INTCON<1>, <INTF>• INT External Interrupt Flag bit.
• 0: Não houve interrupção externa (reset default). • 1: Houve interrupção externa.
• INTCON<4>, <INTE>
• INT External Interrupt Enable bit.
• 0: Desabilita interrupção externa (reset default). • 1: Habilita interrupção externa.
INTERRUPÇÕES
1
16 15/12/2016INTCON
• INTCON<0>, <RBIF>• Port B change Interrupt Flag bit.
• 0: Não houve interrupção por mudança (reset default). • 1: Houve interrupção por mudança.
• INTCON<3>, <RBIE>
• Port B change Interrupt Enable bit.
• 0: Desabilita interrupção por mudança (reset default). • 1: Habilita interrupção por mudança.
INTERRUPÇÕES
1
17 15/12/2016
Peripheral Interrupt
• T0IF, T0IE TMR0 Overflow
• INTF, INTE INT External Interrupt
• RBIF, RBIE Port B Change
INTERRUPÇÕES
1
18 15/12/2016
Outras interrupções
• EEIF, EEIE EEPROM Write Operation
• PSPIF, PSPIE Parallel Slave Port Read/Write
• ADIF, ADIE A/D Converter
• TMR1IF, TMR1IE TMR1 Overflow • TMR2IF, TMR2IE TMR2 to PR2 Match • CCP1IF, CCP1IE Capture-Compare-PWM 1 • CCP2IF, CCP2IE Capture-Compare-PWM 2
• RCIF, RCIE USART Receive
• TXIF, TXIE USART Transmit
• SSPIF, SSPIE Synchronous Serial Port
• BCLIF, BCLIE Bus Collision
VEREMOS VEREMOS VEREMOS VEREMOS VEREMOS VEREMOS VEREMOS VEREMOS
INTERRUPÇÕES
1
19 15/12/2016Interrupções periféricas
EEIF PSPIF ADIF TMR1IF TMR2IF CCP1IF CCP2IF RCIF TXIF SSPIF BCLIFINTERRUPÇÕES
1
20 15/12/2016Envio do pedido de interrupção
Outras interrupções Peripheral Interrupt
INTERRUPÇÕES
1
21 15/12/2016Registradores
• INTCON Interrupt Control
• PIR1 Peripheral Interrupt Flag register 1
• PIR2 Peripheral Interrupt Flag register 1
• PIE1 Peripheral Interrupt Enable register 2
• PIE2 Peripheral Interrupt Enable register 2
• INTCON XX0001011b • PIR1 000001100b, 00Ch, banco 0 • PIR2 000001101b, 00Dh, banco 0 • PIE1 010001100b, 08Ch, banco 1 • PIE2 010001101b, 08Dh, banco 1
INTERRUPÇÕES
1
22 15/12/2016Registradores
INTCON PIR1 PIR2 PIE1 PIE2INTERRUPÇÕES
1
23 15/12/2016Efeito da interrupção
• Em computação, fontes diferentes de interrupção levam a execução para diferentes sub-rotinas.
• Na PIC, todas as fontes levam para a mesma sub-rotina.
INTERRUPÇÕES
1
24 15/12/2016
Efeito da interrupção
• Uma solicitação de interrupção não é atendida se ela está desabilitada.
• O atendimento de uma interrupção corresponde à execução da rotina de interrupção.
• Quando esta rotina é atendida, 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 armazená-lo na pilha.
25 15/12/2016
Efeito da interrupção
• A mudança da posição do ponteiro de programa para a rotina de interrupção ocorre da mesma forma que na instrução CALL.
• O endereço dessa rotina é o interrupt vector (0004h). • A pilha sofre um PUSH (TOS PC+1).
• PC interrupt vector address. • A última instrução da rotina é RETFIE. • A pilha sofre um POP (PC TOS).
26 15/12/2016
Overflow da pilha
• Se a pilha está lotada na ocasião do atendimento da interrupção, ocorre um stack overflow. • Quando se usa interrupções, o programa
principal deve usar, no máximo, sete níveis da pilha, deixando um nível reservado para o desvio provocado pela interrupção.
• Se a rotina de interrupção emprega a instrução CALL, então devem ser reservados dois níveis na pilha para a interrupção, restando seis níveis para o programa principal.
• Se a instrução CALL é usada várias vezes cumulativamente, o espaço reservado na pilha deve ser planejado convenientemente.
INTERRUPÇÕES
1
27 15/12/2016
Efeito da interrupção
• A execução da rotina de interrupção requer um push. • 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 atendimento de uma solicitação durante o atendimento de outra gera comportamento imprevisível.
• Para resolver esse problema, o atendimento a uma interrupção é iniciado pela desabilitação automática das interrupções (GIE = 0).
• O comando RETFIE habilita, automaticamente, as interrupções (GIE = 1).
INTERRUPÇÕES
1
28 15/12/2016Efeito da interrupção
Programa Rotina de interrupção RETFIE Instante no qual ocorre a solicitação de interrupçãoINTERRUPÇÕES
1
29 15/12/2016Efeito da interrupção
• O programa mais curto possível para uma rotina chamada por CALL é formado, apelas, pelo comando RETURN. • O programa mais curto possível para a rotina de
interrupção é formado, apelas, pelo comando RETFIE. • Esta é uma forma de eliminar o efeito das interrupções, a
não ser pelos TCY’s gastos nos desvios.
#include<p16f877.inc>
org 0x0 ;Vetor de Reset
GOTO Início ;Chamada da Rotina Início org 0x4 ;Vetor de Interrupção
RETFIE ;Término da Interrupção
Início
BCF STATUS,RP0 ;Programa principal
BCF STATUS,RP1 ;Programa principal end 0000 2805 GOTO 0x5 0001 3FFF 0002 3FFF 0003 3FFF 0004 0009 RETFIE 0005 1283 BCF 0x3, 0x5 0006 1303 BCF 0x3, 0x6
INTERRUPÇÕES
1
30 15/12/2016Efeito da interrupção
• A rotina de interrupção pode ser escrita a partir da posição do interrupt vector.
• O programa principal, chamado pelo rótulo “Início”, vem logo atrás.
• O comando “GOTO Início” se encarrega de definir o endereço real do programa principal.
• Outra opção é, no endereço do interrupt vector, usar o comando“GOTO Rotina_Interrupção”.
#include<p16f877.inc>
org 0x00 ;Vetor de Reset
GOTO Início ;Chamada da Rotina Início org 0x04 ;Vetor de Interrupção
GOTO InicInt ;Chamada da Rotina InicInt
Início
BCF STATUS,RP0 BCF STATUS,RP1
. .
INTERRUPÇÕES
1
31 15/12/2016
Rotina seletiva para interrupção
• A rotina de interrupção é uma só, porém a solicitação de interrupção pode ter catorze eventos de origem diferentes. • Pode ser que a rotina precise ser diferente para os
diversos eventos que podem solicitar interrupção. • É necessário identificar a origem.
• Para isso, é preciso buscar qual interrupt flag vale “1”. • É usado o comando BTFSC.
• Na sequência, é feito um GOTO com o endereço da sub-rotina específica da origem selecionada.
• Para cada origem considerada, há uma sub-rotina. • Somente um evento é atendido por vez
• Cada sub-rotina termina com RETFIE.
INTERRUPÇÕES
1
32 15/12/2016
Rotina seletiva para interrupção
• Somente um evento é atendido por vez. • Somente um interrupt flag vale “1”. • Se mais de um interrupt flag vale “1”, o
programa está errado e não há como identificar o último evento.
• Para evitar este erro, sempre que uma interrupção é atendida, o seu respectivo
interrupt flag deve ser configurado para“0”.
• Usar as instruções BCF ou CLRF. T0IF INTIF RBIF EEIF PSPIF ADIF TMR1IF TMR2IF CCP1IF CCP2IF RCIF TXIF SSPIF BCLIF
INTERRUPÇÕES
1
33 15/12/2016Interrupt flag
IF
t
1 0 T0IF INTIF RBIF EEIF PSPIF ADIF TMR1IF TMR2IF CCP1IF CCP2IF RCIF TXIF SSPIF BCLIFINTERRUPÇÕES
1
34 15/12/2016Rotina de identificação do evento
INTCON PIR1 PIR2 . . BTFSC INTCON,T0IF GOTO INTTO BTFSC INTCON,INTF GOTO INTINTF BTFSC INTCON,RBIF GOTO INTRB BTFSC PIR1,PSPIF GOTO INTPSP . .
INTERRUPÇÕES
1
35 15/12/2016Seleção de eventos – Opção 1
Programa Rotina de interrupção
Rotina de identificação do evento GOTO RETFIE . . BTFSCINTCON,T0IF GOTO INTTO BTFSCINTCON,INTF GOTO INTINTF BTFSCINTCON,RBIF GOTO INTRB BTFSCPIR1,PSPIF GOTO INTPSP . .
INTERRUPÇÕES
1
36 15/12/2016Seleção de eventos – Opção 2
Programa Rotina de interrupção
Rotina de identificação do evento GOTO GOTO RETFIE
ACESSO À MEMÓRIA
37
15/12/2016 15/12/2016 38
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 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.
ACESSO À MEMÓRIA
2
Memória Address Data
Flash 13 bits* 14 bits
EEPROM 8 bits 8 bits
SRAM 9 bits 8 bits
Tamanhos
39 15/12/2016
* Pode ser menor em outros modelos da família.
ACESSO À MEMÓRIA
2
• Memórias que podem ser acessadas: • SRAM file registers
• Flash program memory
• EEPROM data memory • Memória externa
40 15/12/2016
• 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.
Memórias
ACESSO À MEMÓRIA
2
41 15/12/2016Terminologia
• Quando se fala em acesso à memória, se fala em acesso a dados que serão manipulados pelo programa em execução.
• A EEPROM é chamada de data memory porque ela se presta somente ao armazenamento de dados não voláteis. • A flash é chamada de program memory porque ela se presta principalmente ao armazenamento do programa, mas também pode ser empregada no armazenamento de dados.
• Este capítulo apresenta o acesso à EEPROM e à flash como memórias de dados.
ACESSO À MEMÓRIA
2
Flash e EEPROM
42 15/12/2016
• Como a flash, a EEPROM e a memória externa são muito mais lentas do que a ULA, toda a comunicação é feita por meio de registradores. • Como os registradores (SRAM) têm velocidade
muito superior à das outras memórias, o desempenho da MCU não fica comprometido. • Neste tópico, a flash é tratada como uma data
memory. Sua finalidade é a de expandir a
capacidade de armazenamento da EEPROM. • Neste tópico, o acesso à flash é igual ao da
EEPROM, pelo data bus. Não confundir isso com arquitetura Von-Neumann.
ACESSO À MEMÓRIA
2
Flash, EEPROM e memória externa
43 15/12/2016
Ext. Flash
8-bit Data Bus
SFR SFR SFR File Registers PORT* 8-bit 14-bit 8-bit 8-bit A,B,C,D,E
* O PSP não serve para este propósito.
ACESSO À MEMÓRIA
2
44 15/12/2016
Flash e EEPROM – Registradores
• Os registradores envolvidos com a Flash e a
EEPROM são chamados de “EE” porque,
antigamente, não havia Flash, e tanto Program
Memory quanto Data Memory usavam
tecnologia EEPROM.
• Posteriormente, com a introdução da tecnologia
Flash para uso como Program Memory,
preferiram manter a nomenclatura original.
ACESSO À MEMÓRIA
2
45 15/12/2016
• EEDATA EEPROM/Flash data low byte
• EEDATH EEPROM/Flash data high byte
• EEADR EEPROM/Flash address low byte
• EEADRH EEPROM/Flash address high byte
• EECON EEPROM/Flash control byte
• EEDATA 000011110b, 10Ch, banco 2 • EEDATH 000011111b, 10Eh, banco 2 • EEADR 010011110b, 10Dh, banco 2 • EEADRH 010011110b, 10Fh, banco 2 • EECON1 010011111b, 18Ch, banco 3 • EECON2 010011111b, 18Dh, banco 3
Flash e EEPROM – Registradores
ACESSO À MEMÓRIA
2
Flash e EEPROM – Registradores
8 bits– Flash e EEPROM 8 bits– Flash e EEPROM 6 bits– Flash 5 bits– Flash Banco 2 (10) Banco 3 (11) Dado Endereço Controle 46 15/12/2016
ACESSO À MEMÓRIA
2
Flash e EEPROM – Dados
47 15/12/2016
Flash
8-bit Data Bus EEDATA 8-bit EEDATH 6-bit 7 0 7 0 13 8
ACESSO À MEMÓRIA
2
Flash e EEPROM – Endereço
48 15/12/2016
Flash
8-bit Data Bus EEADR 8-bit EEADRH 5-bit* 7 0 7 0 12 8
Flash e EEPROM – Controle
49 15/12/2016
Flash
8-bit Data Bus EECON1
* Pode ser menor em outros modelos da família. RD WR WEWN EEPGD
Acesso à EEPROM
50 15/12/2016EEPROM
8-bit Data Bus
EEDATA EEADR EECON1
8 -b it 8 -b it 8 -b it
ACESSO À MEMÓRIA
2
Acesso à flash
51 15/12/2016Flash
8-bit Data Bus
EEDATH EEDATA EEADRH EEADR EECON1
6 -b it 8 -b it 5 -b it 8 -b it 8 -b it
ACESSO À MEMÓRIA
2
52 15/12/2016• A EPROM é chamada de data memory.
• A flash é usada, prioritariamente, como a memória de programa.
• A arquitetura PIC não permite o uso de memória de programa externa.
• A flash, na condição de program memory, é endereçada pelo 13-bit program counter e lida pelo 14-bit instruction
register.
• 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. • A flash, na condição de data memory, é endereçada e
acessada pelo 8-bit data bus.
Flash
ACESSO À MEMÓRIA
2
53 15/12/2016Flash
0000h 1FFFhÁrea alocada a programa
Flash program memory
Acessível ao PC Inacessível a EEADR Lido pelo instruction register
Área alocada a dados
Flash data memory
Inacessível ao PC Acessível a EEADR Lido/escrito por EEDATA Instrução de retorno a posições anteriores
ACESSO À MEMÓRIA
2
54 15/12/2016• Não existe ferramenta de identificação da área alocada para program memory e da área alocada para data memory dentro da flash.
• O programa precisa fazer esta separação.
• A execução do programa deve impedir que o PC aponte para uma área alocada para a data memory. • O EEADR jamais pode apontar para uma área
alocada para a program memory.
• Uma área da program memory lida como data
memory não possui significado.
• Uma área da data memory lida como program
memory gera instruções imprevisíveis.
Flash
ACESSO À MEMÓRIA
2
• EEDATA e EEDATH (EEPROM datum): Contém o dado que será gravado na EEPROM ou na flash. • EEADR e EEADRH (EEPROM address): Contém o
endereço da EEPROM ou da flash onde o dado será gravado.
• EEDATA, EEDATH, EEADR, EEADRH podem ser gravados em qualquer ordem.
55 15/12/2016
Flash e EEPROM – Registradores
Gravação (escrita)
ACESSO À MEMÓRIA
2
• EEDATA e EEDATH (EEPROM datum): Contém o dado que foi lido da EEPROM ou da flash.
• EEADR e EEADRH (EEPROM address): Contém o
endereço da EEPROM ou da flash onde o dado foi lido. • EEADR e EEADRH devem ser gravados antes da leitura da
EEPROM ou flash.
• EEDATA e EEDATH devem ser lidos após a leitura da EEPROM ou flash.
56 15/12/2016
Flash e EEPROM – Registradores
Leitura
ACESSO À MEMÓRIA
2
• Flash data: 14 bits
• Flash address: 13 bits • Acesso lento.
• EEPROM data: 8 bits
• EEPROM address: 8 bits
• Acesso rápido.
57 15/12/2016
Flash e EEPROM – Registradores
• A flash é mais lenta na leitura e na gravação; porém a diferença de rapidez é maior na gravação.
ACESSO À MEMÓRIA
2
Flash e EEPROM – Seleção e leitura
• EECON1<7>, EEPGD • Program / Data Select bit.
• 0: EEPROM (D) – Datum (reset default)
• 1: Flash (PG) – Program
• EECON1<0>, RD • Read Control bit. • 0: Leitura concluída. • 1: Leitura em andamento. 0 7 Nome 58 15/12/2016
ACESSO À MEMÓRIA
2
Flash e EEPROM – Seleção
59 15/12/2016 Flash EEPGD CS CS CS: chip select Modelo conceitual
ACESSO À MEMÓRIA
2
Flash e EEPROM – Seleção e leitura
0 7
Nome
60 15/12/2016
• Durante a leitura, o endereço da memória selecionada é buscado.
• Na conclusão da leitura, o conteúdo do endereço da memória é copiado para o registro de dados (EEDATA e EEDATH).
FLASH e EEPROM – Seleção e leitura
61 15/12/2016
• No caso da flash, essa leitura não afeta o PC.
• O endereçamento da flash é feito pelo PC na ocasião da busca pela próxima instrução– fetch. O PC controla o
address bus da program memory.
• 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 EEDATA e EEDATH.
FLASH e EEPROM – Leitura
• EECON1<0>, RD, é colocado em nível 1 por meio do comando BSF EECON1, RD.
• Ao fazer RD=1, a leitura é iniciada.
• Ao término da leitura, RD=0 automaticamente. • Não é permitido fazer BCF EECON1, RD.
62 15/12/2016
RD
t
1 0ACESSO À MEMÓRIA
2
FLASH e EEPROM
• Flash: Destinada a informações que sejam gravadas raramente. Acesso lento.
• EEPROM: Destinada a informações que sejam gravadas frequentemente e não volátil. Acesso rápido.
• Nenhuma das três memórias (flash, SRAM e EEPROM) podem sofrer leitura e escrita ao mesmo tempo, em bits diferentes.
• 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.
63 15/12/2016
ACESSO À MEMÓRIA
2
FLASH e EEPROM – Escrita
• A gravação da flash durante a execução do programa paralisa a execução porque a execução da próxima instrução implicaria na leitura da flash durante sua gravação.
• A execução é liberada apenas após a conclusão da gravação. • A gravação da EEPROM durante a execução do programa não paralisa a sua execução, pois a leitura da próxima instrução é feita na flash.
64 15/12/2016
ACESSO À MEMÓRIA
2
FLASH e EEPROM – Escrita
• Como o processo de escrita pode levar um tempo maior do que o ciclo de instrução e a gravação da EEPROM não paralisa o Program Counter, é importante realizar uma rotina de verificação do bit WR.
• A execução do programa somente pode prosseguir após o término da gravação, quando WR=0.
• Este procedimento não é necessário na escrita da flash.
65 15/12/2016
;Verifica se está em processo de escrita
BSF STATUS, RP1 ;
BSF STATUS, RP0 ;Banco 3
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
ACESSO À MEMÓRIA
2
FLASH e EEPROM – Escrita
66 15/12/2016
• EECON1<1>, WR, é colocado em nível 1 por meio do comando BSF EECON1, WR.
• Ao fazer WR=1, a escrita é iniciada.
• Ao término da escrita, WR=0 automaticamente. • Não é permitido fazer BCF EECON1, WR.
RD
t
1ACESSO À MEMÓRIA
2
FLASH e EEPROM – Escrita
• Para proteger as memórias contra escrita acidental, é necessário colocar o código de escrita antes da escrita. • O código deve ser enviado para o registrador EECON2. • Código: 55h – AAh. • 55h = 01010101b • AAh = 10101010b 67 15/12/2016
ACESSO À MEMÓRIA
2
FLASH e EEPROM – Escrita
• EECON2, muito embora seja acessado por um endereço da SRAM (18Dh), ele não corresponde a um registrador da SRAM.
• EECON2 não é um registrador; ele não pode ser lido e um dado gravado nele não fica registrado.
• Dados enviados para EECON2 apenas são comparados com a sequência 55h – AAh.
• O acesso a EECON2 por meio do endereço 18Dh existe apenas para tornar a programação mais simples.
68 15/12/2016
ACESSO À MEMÓRIA
2
8-bit Data Bus
1 para 55h 1 para AAh
REG
1-bit
REG
1-bit
WREN Inicia escrita 69 15/12/2016 • O registrador para AAh é acionado dois ciclos de instrução mais tarde do que o para 55h.FLASH e EEPROM – Escrita
BSF STATUS, RP1 BSF STATUS, RP0 BCF EECON1, EEPGD BSF EECON1, WREN MOVLW 0x55 MOVWF EECON2 MOVLW 0xaa MOVWF EECON2 BSF EECON1, WR BCF EECON1, WREN
ACESSO À MEMÓRIA
2
FLASH e EEPROM – Escrita
70 15/12/2016 0 7 Nome • EECON1<2>, WREN • Write Enable bit
• 0: Desabilitado (reset default). • 1: Habilitado.
• EECON1<3>, WRERR • Write Error bit • 0: Não houve erro. • 1: Houve erro.
ACESSO À MEMÓRIA
2
BSF STATUS, RP1 BSF STATUS, RP0 BCF EECON1, EEPGD BSF EECON1, WREN MOVLW 0x55 MOVWF EECON2 MOVLW 0xaa MOVWF EECON2 BSF EECON1, WR BCF EECON1, WREN 71 15/12/2016 Não interromperEEPROM – Escrita – Proteção contra interrup.
• É preciso usar uma proteção contra interrupção. Proteção contra interrupção BCF INTCON, GIE XXXXXXXXX BSF INTCON, GIE Área protegida Desabilita interrupção Reabilita interrupção
ACESSO À MEMÓRIA
2
FLASH e EEPROM – Erro
72 15/12/2016
• Causas:
• /MCLR reset (via pino 1 – Master Clear) • WDT reset
• Não há verificação de erro pelo uso de endereço inválido. • Havendo erro, WRERR =1.
• Não é permitido fazer BSF EECON1, WRERR. • EECON1<3> recebe“1” pela PICao identificar o erro. • EECON1<3> recebe“0” manualmente.
• BCF EECON1, WRERR.
FLASH e EEPROM – Interrupção
73 15/12/2016
• Quando a escrita é concluída com sucesso, uma solicitação de interrupção é realizada.
• EEIF: EEPROM flash Write Interrupt Flag bit • PIR2<4> Peripheral Interrupts 2
• 0: Não houve um WR ou houve falha no WR (reset default).
• 1: Houve um WR.
• Após um WR, EEIF deve ser zerado manualmente. • Não é permitido fazer BSF PIR2, EEIF. • PIR2<4> recebe“1” em WR.
• PIR2<4> recebe“0” manualmente. • BCF PIR2, EEIF.
• Esse comando é dado após a ciência do evento. 15/12/2016 74
• EEIE: EEPROM/flash Write Operation Interrupt Enable bit • PIE2<7> (Peripheral Interrupts Enable bits 2)
• 1: Habilita interrupção EE. • 0: Desabilita interrupção EE.
• PIR2 000001101b, 0Dh, banco 0
• PIE2 010001101b, 8Dh, banco 1
FLASH e EEPROM – Interrupção
ACESSO À MEMÓRIA
2
FLASH – Leitura e escrita
• Não é comum que se leia ou escreva na flash por meio da execução do programa.
• A leitura usual da flash, em tempo de execução, é feita por meio do Program Counter, do Instruction Register e do Instruction Decoder.
• A leitura usual da flash, fora de execução, é feita por meio de software e hardware específicos para leitura e cópia das memórias da PIC(flash, SRAM e EEPROM) – ICD.
• A gravação usual da flash é feita por meio de software e
hardware específicos para gravação do programa na
PIC. As outras memórias também podem ser gravadas.
75 15/12/2016
ACESSO À MEMÓRIA
2
FLASH – Leitura
• Um exemplo de programa que grava a flash durante a execução é o gravador de número de série, ou de endereço global, nome do distribuidor, etc
• Nem sempre é conveniente gravar tais dados na EEPROM, pois eles são gravados uma única vez. • A PIC não possui PROM para que dados sejam
gravados irreversivelmente, e a EEPROM é usada para dados que sejam gravados frequentemente.
• Uma palavra de 14 bits da flash pode ser usada para armazenar 2 dígitos ASCII (7 bits).
76 15/12/2016
ACESSO À MEMÓRIA
2
FLASH – Leitura
• Outro exemplo de uso da flash é quando a quantidade de dados a ser gravada excede a capacidade de armazenamento da EEPROM.
• Mais um exemplo de uso da flash é quando o tamanho das palavras de dado a serem gravadas é maior do que 8 bits. O tamanho máximo é de 14 bits.
• A parte gravada da flash com dados não é considerada
program memory, mas, sim, data memory.
77 15/12/2016
ACESSO À MEMÓRIA
2
Memória externa
• O acesso à memória externa (quando houver) deve ser feito através das portas paralelas (A,B,C,D,E ou PSP). • O controle da memória externa deve ser feito através
de bits obtidos também através das portas paralelas.
78 15/12/2016
ACESSO À MEMÓRIA
2
Flash 13-bit MUX 31 Seleção 14-bit MUX 31 Seleção 14-bit DEMUX 13 Seleção Address Data in Data out PC EEADR ICD2 Não usado EEDATA ICD2 Instruction Register EEDATA ICD2Flash
79 15/12/2016 S1 S0 Uso 0 0 Busca (fetch) 0 1 Comando RD ou WR 1 0 ICD2 1 1 – Modelo conceitualCLOCK
3
80 15/12/2016CLOCK
CLOCK
3
81 15/12/2016Definição
• O relógio (clock) é o “regente da orquestra”. • Todos os dispositivos operam a uma
frequência determinada pelo clock. • O clock não pode ser tão alto ao ponto do
chip falhar ou estragar, nem tão baixo ao
ponto do WDT estourar. h ttp ://w w w .b e m p a ra n a .c o m .b r/c ra q u e s-e -c a n e la d a s /w p -c o n te n t/u p lo a d s /2 0 1 1/ 1 0 /B a tu ta _ M a e s tro .jp g
CLOCK
3
82 15/12/2016Definição
• Embora o regente de uma orquestra possa alterar o andamento da música, o relógio em sistemas digitais não pode fazer isso. • A frequência deve ser constante no tempo.
h ttp :// w ww. b a te ra .c o m .b r/c o n te n ts /e st u d o s/a p o n 0 b n 2 .jp g
CLOCK
3
83 15/12/2016Pinagem
OSC1/CLKIN OSC2/CLKOUTCLOCK
3
84 15/12/2016Pinagem
• OSC1: Oscillator crystal input
• OSC2: Connects to crystal or resonator
• CLKIN: External clock source input
• CLKOUT: Oscillator crystal output • O tipo de uso determina o nome dos pinos.
• RC: Oscilador de relaxação. Requer dispositivo semicondutor para realizar a comutação carga/descarga. • XTAL ou XT (cristal): Usado em circuito semelhante ao
oscilador de relaxação, porém a frequência é determinada pelo cristal.
85 15/12/2016
Origem da oscilação
http://w ww.electronicecircuits.com/w p-content/uploads/2009/12/crystal-tester-XTal-Tester.jpg
• Relaxação: Causa (tal como isolação, iluminação, etc). • Relaxamento: Consequência (tal como isolamento,
iluminamento, etc).
• Oscilador de relaxação é aquele onde o relaxamento 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.
86 15/12/2016
Oscilador de relaxação
CLOCK
3
• Bits 1 e 0 do Configuration Word. • Mnemônicos: FOSC1 e FOSC0.
• Outros modelos mid-range também possuem o bit FOSC2. • A família mid-range possui até 8 diferentes configurações. • Na PIC16F877 há, somente, quatro opções.
Configuração
87 15/12/2016
FOSC2 FOSC1 FOSC0 Oscilador Significado 0 1 1 RC Resistor / Capacitor
0 1 0 HS High Speed Crystal / Resonator
0 0 1 XT Crystal / Resonator
0 0 0 LP Low Power Crystal
1 1 1 EXTRC Resistor / Capacitor
1 1 0 EXTRC Resistor / Capacitor
1 0 1 INTRC Resistor / Capacitor interno
1 0 0 INTRC Resistor / Capacitor interno
P IC 1 6 F 8 7 7
CLOCK
3
Oscilador
• RC: Forma mais barata de geração da oscilação. Oscilador com grande imprecisão e variação na frequência. É o modo padrão.
• HS: Indicado para aplicações em alta frequência. É modo de operação que mais consome energia na geração da oscilação e no funcionamento do chip. • LP: Indicado para aplicações que requeiram baixo
consumo de energia e a frequência de operação possa ser baixa. O consumo é inferior do que o do modo RC. • XT: Modo intermediário entre HS e LP.
• Originalmente, havia, apenas, os modos RC e XT.
88 15/12/2016
CLOCK
3
89 15/12/2016Oscilador
(2): Ausente na PIC16F877.CLOCK
3
Oscilador Pino 13
Pino 14
RC
CLKIN
CLKOUT
HS
OSC1
OSC2
XT
OSC1
OSC2
LP
OSC1
OSC2
Externo
OSC1
OSC2
Nomenclatura dos pinos
90 15/12/2016
CLOCK
3
91 15/12/2016
• Aplicações que não requeiram boa precisão na oscilação: • Brinquedos.
• Painéis de exibição de informações. • Controle em malha aberta. • Controle proporcional.
• São aplicações que não fazem comunicação com outros sistemas microprocessados.
• 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.
Oscilador RC
CLOCK
3
Oscilador RC
Carga
Descarga
Circuito RC série 92 15/12/2016– V
S+
– V
R+
– V
C+
VC0=0VI
t = 0
+ V
R–
– V
C+
VC0>0VI
t = 0
CLOCK
3
Oscilador RC
Circuito RC série 93 15/12/2016– V
S+
– V
C+
carga
descarga
CLOCK
3
Oscilador RC
C R t S C R t S R C R t S C R C S e R V I e V V e V V V V V 1 1 C R t S C R t C R C R t C C e R V I e V V e V V 1 1 1 0 0 Carga Descarga Circuito RC série 94 15/12/2016 E s te sl id e n ã o ca i n a p ro va .CLOCK
3
Oscilador RC
Carga plena Descarga plena
V
SOURCEV
0V
C(t)V
C(t)t
t
Circuito RC série 95 15/12/2016 • t = [s] • Carga plena: VC= VS. • Descarga plena: VC= 0V.CLOCK
3
Oscilador RC
Circuito RC série 96 15/12/2016• O conceito de carga/descarga plenas, são, matematicamente, de obtenção impossível. • 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. • Em outras palavras, o nível de variação é
comparável ou menor do que os níveis de ruído incorporados no sistema.
97 15/12/2016
• Fatores aleatórios que afetam a frequência:
• Temperatura – A resistividade elétrica () e a permissividade elétrica () dependem da temperatura.
• Valores de resistência elétrica (R) e capacitância elétrica (C) diferentes do especificado, mas dentro da faixa de tolerância.
• Variação na fonte de alimentação.
Oscilador RC
Circuito RC série
98 15/12/2016
• Um semicondutor (chave de estado sólido) (não mostrado) faz a comutação entre carga e descarga. • O produto RC é chamado de constante de tempo (). • é medido em segundos ([][F]=[s]).
• Se for muito menor do que o período de oscilação, a onda é, aproximadamente, quadrada.
• Se for muito maior do que o período de oscilação, a onda é, aproximadamente, triangular.
• Para o clock, é desejável uma onda quadrada.
Oscilador RC
Grande amplitude Baixa frequência Pequena amplitude Alta frequênciaCLOCK
3
99 15/12/2016• Se for muito menor do que o período de oscilação, a onda é, aproximadamente, quadrada.
• Esse não é um bom método para obtenção de onda quadrada porque a comutação entre carga e descarga é feita em um momento onde a tensão varia muito pouco (derivada pequena). • 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.
• 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.
Oscilador RC
CLOCK
3
100 15/12/2016
• É preciso converter a onda
triangular em uma onda quadrada. • Isso pode ser feito por meio de
uma porta lógica com histerese.
Oscilador RC
Onda triangular Onda quadrada
CLOCK
3
101 15/12/2016
• O circuito ST emprega o efeito de histerese.
• Histerese é obtida por uma realimentação positiva interna. • Trata-se da diferença entre o caminho de ida e o de volta
entre dois estados estáveis.
• A transição do estado baixo para o alto ocorre em um 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 dispositivo, sua queima e até mesmo um incêndio.
Circuito ST – Schimitt Trigger
CLOCK
3
102 15/12/2016
• Circuito que tem, como principal função, o exercício de uma histerese analógica ou digital.
• Esta histerese age como um filtro passa-baixas. • Na versão analógica, este filtro é obtido por um ST. • Na versão digital, este filtro é obtido por um temporizador.
Glitch filter
CLOCK
3
Histerese analógica
http://upload.w ikimedia.org/w ikipedia/commons/thumb/c/c7/B-H_loop.png/350px-B-H_loop.png
103 15/12/2016
Exemplo para curva de magnetização
• B: Vetor densidade de fluxo magnético [Wb/m2]. • H: Vetor intensidade de campo magnético [A/m].
Est e sl id e n ã o ca i n a p ro va .
CLOCK
3
Histerese digital
Correta Invertida Borda positiva Borda negativa Borda positiva Borda negativa t Mínimo período Máxima frequência de oscilação104 15/12/2016
CLOCK
3
Histerese digital
• O tempo mínimo para que a tensão de entrada varie entre a tensão de limiar de subida (Rise Voltage – VR) e a tensão de entrada de limiar de descida (Fall Voltage– VF) é o mínimo período de oscilação. • O tempo de transição entre VRe VF
determina a máxima frequência de comutação. VIN B o rd a p o s it iv a B o rd a n e g a ti va VF VR VL VH VIN VOUT Mínimo período Máxima frequência de oscilação
105 15/12/2016
CLOCK
3
Buffer
106 15/12/2016• Estágio de saída de toda porta lógica. • Lida com a saída da operação lógica. • Responsável por três funções:
• Ajuste dos níveis de tensão. • Amplificação de corrente. • Casamento de impedância. • Gerador de atraso.
CLOCK
3
Buffer ST
http://pcbheaven.com/w ikipages/images/theschmitttrigger_1261498396.png VIN VOUT VIN VOUT VOUT VIN 107 15/12/2016CLOCK
3
Histerese digital
Buffer ST NOT ST Exemplos 108 15/12/2016Histerese digital
Exemplos
109 15/12/2016
• Portas lógicas com efeito ST não possuem diferença na etapa lógica. • A diferença está no buffer, parte
integrante de toda porta lógica. • As portas ST possuem, no estágio
de saída, um buffer ST.
Oscilador RC
• Um oscilador RC puramente analógico gera uma saída em onda triangular.
• A porta lógica garante uma saída em níveis discretos.
• A saída triangular torna-se uma onda quadrada. • 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 matematicamente infinita. 110 15/12/2016
CLOCK
3
Oscilador RC
http://w ww.national.com/ds/CD/CD4093BC.pdf 4093 Onda triangular Onda quadrada 111 15/12/2016CLOCK
3
Oscilador RC
112 15/12/2016 D e sca rg a I 1 1 VOUT 0 C a rg a I 1 0 VOUT 1CLOCK
3
Oscilador RC com controle de Dutty-Cycle
4093 http://w ww.eletronica.org/arq_apostilas/apostila_pw m.pdf Chave analógica 113 15/12/2016
CLOCK
3
Oscilador RC com controle de Dutty-Cycle
Carga do capacitor Descarga do capacitor
0 1
1 0
Também poderia ter um potenciômetro
http://w ww.eletronica.org/arq_apostilas/apostila_pw m.pdf
114 15/12/2016
CLOCK
3
115 15/12/2016RC
Oscilador externo CLKIN CLKOUTCLOCK
3
116 15/12/2016• A conexão CLKOUT fornece fOSC/4. • A conexão CLKOUT fornece fCY.
• 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.
• O modo power down não desliga o oscilador RC externo. Periféricos que não dormem continuam funcionando.
RC
Oscilador externoCLOCK
3
117 15/12/2016• O capacitor descarregado começa a carregar-se. • O MOSFET de canal N está desligado.
• A tensão na entrada do buffer schimit trigger começa a aumentar.
• O buffer passa de nível 0 para nível 1. • VGSpassa para valor alto, acima de VTH. • O MOSFET liga.
• O capacitor é descarregado sobre RDS. • O buffer passa de nível 1 para nível 0. • VGSpassa para 0V. • O MOSFET desliga. • O ciclo recomeça. D SG
RC
Oscilador externoCLOCK
3
118 15/12/2016• A histerese do buffer schimit trigger serve para evitar a formação de uma onda de alta frequência e pequena amplitude.
• A histerese garante uma amplitude aceitável na onda.
• Na descarga, o MOSFET ligado age como uma resistência ativa. • RDSage como resistor de descarga. • Na carga, é usado o resistor externo. Isto significa que o
dutty-cycle pode ser diferente de 50%.
D SG
RC
Oscilador externoCLOCK
3
119 15/12/2016 • Ausente na PIC16F877.• Não sofre ação do comando SLEEP.
• Permanece em oscilação no modo power down. • Gera uma frequência de 4MHz em 25C.
• Um ajuste fino pode ser feito pelos bits OSCCAL<7:4>. • Internal Oscilator Calibration bits: <CAL3:CAL0> • 0000h: Mínima frequência.
• 1111h: Máxima frequência.
• Off-set de frequência superior: CALFST (fast). • Off-set de frequência inferior: CALSLW (slow).
RC
Oscilador internoCLOCK
3
120 15/12/2016RC
Oscilador interno121 15/12/2016
• Aplicações que requerem boa precisão na oscilação: • Comunicação serial.
• Controle integral e controle derivativo. • Sistema integrado com computador. • Sistema com relógio HH/MM/SS.
LP/XT/HS
Oscilador interno 122 15/12/2016Oscilador
Frequência
LP
32kHz a 200kHz
XT
200kHz a 4MHz
HS
4MHz a 20MHz
• Frequência acima da máxima permitida: Overclock. • Frequência abaixo da mínima permitida: Underclock. • Overclock e underclock podem gerar comportaento
imprevisível.
LP/XT/HS
Oscilador internoCLOCK
3
123 15/12/2016LP/XT/HS
• XTAL: Cristal • RS: Resistor Série. • RF: Resistor de Feedback (2M a 10M).• Alguns modelos possuem um terceiro buffer na linha de baixo. Oscilador interno
CLOCK
3
124 15/12/2016 Oscilador Frequência C1 C2 LP 200kHz32kHz 33pF15pF 33pF15pF XT 200kHz 1MHz 4MHz 47pF -68pF 15pF 15pF 47pF -68pF 15pF 15pF HS 4MHz 8MHz 20MHz 15pF 15-33pF 15-33pF 15pF 15-33pF 15-33pF• Capacitâncias maiores tornam o oscilador mais estável. • Capacitâncias menores fazem o oscilador iniciar mais
rapidamente.
LP/XT/HS
Oscilador internoCLOCK
3
125 15/12/2016LP/XT/HS
• A diferença entre LP, XT e HS, no circuito interno, é o ganho de corrente nos bufferes.
• Nos modos mais lentos, o ganho é menor.
• Quanto maior é o ganho, maior é o consumo de energia. Oscilador interno
Oscilador
Ganho
LP
Baixo
XT
Médio
HS
Alto
CLOCK
3
126 15/12/2016LP/XT/HS
• 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. • O modo power down desliga o buffer tri-state. • O desligamento do buffer gera economia de
energia e parada na oscilação. Oscilador interno
Buffer 3S
CLOCK
3
127 15/12/2016Oscilador
f máx
T (mín)
LP
200kHz
5s
XT
4MHz
250ns
HS
20MHz
50ns
LP/XT/HS
Oscilador internoCLOCK
3
128 15/12/2016LP/XT/HS – Iniciação
Oscilador internoCLOCK
3
129 15/12/2016LP/XT/HS
Oscilador externo• Este modo de operação é interessante quando já se tem a onda quadrada pronta. • A mesma fonte de clock pode ser compartilhada com diversos dispositivos. • OSC2 permanece em tri-state. • OSC2 pode agir como uma antena . • OSC2 pode ser ligado ao terra por meio
de um resistor para evitar ruídos. Onda quadrada
CLOCK
3
130 15/12/2016LP/XT/HS
Oscilador externo MCU 1 MCU 2 MCU 3 MCU 4CLOCK
3
131 15/12/2016 Série ParaleloLP/XT/HS
Exemplos de oscilador externo a cristal
OSC1 OSC1 Est e sl id e n ã o ca i n a p ro va .
• Como os bufferes não são usados, a escolha entre LP, XT ou HS é irrelevante.
CLOCK
3
132 15/12/2016
Bordas
• As instruções iniciam na borda de descida de CLKOUT. • CLKOUT inicia na borda de subida de OSC1.
OSC1
CLKOUT
133 15/12/2016
RESET
134 15/12/2016Definiçã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 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.
RESET
4
135 15/12/2016
1. Power-on reset (POR).
2. MCLR reset durante operação normal.
3. MCLR reset durante o sleep.
4. WDT reset durante operação normal.
5. WDT reset durante o sleep.
6. Brown-out reset (BOR).
7. Parity Error reset (PER)*.
Tipos
*Ausente na PIC16F877-20/PRESET
4
136 15/12/20161. MCLR reset durante o sleep. 2. WDT reset durante o sleep. 3. Interrupt wake-up.
Wake-up
• São os tipos de reset ocorridos durante o power down (sleep). • O wake-up tira a MCU do modo sleep.
• O PC retoma a posição onde estava anteriormente ao power
down.
• No WDT wake-up e no interrupt wake-up, os registradores mantém seus valores anteriores, exceto os bits indicativos do
reset e os bits de periféricos que não dormem. PCPC+1.
• No MCLR wake-up, os registradores reiniciam. PC 0000h. http://3.bp.blogspot.com/-HXWnUx9DHQ8/UF8165YCCWI/AAAAAAAAAUU/fRZH8bsIQBY/s1600/wakeuo.gif
RESET
4
137 15/12/2016Pinagem
• /MCLR: Master Clear input. • Compartilhado com a função VPP. • VPP: Tensão de alimentação em programação. • O resistor é opcional.
RESET
4
138 15/12/2016Pinagem
• VPP: Tensão de alimentação em programação. • VPP> VDD.
• Programação é a gravação da program memory através dos protocolos permitidos.
• Programação não é a gravação da program memory como se fosse um data memory através da execução do programa. • O LVP dispensa o uso do VPP.
RESET
4
139 15/12/2016
Pinagem
• Todos os tipos de reset ocorrem durante a execução ou para iniciar a execução do programa.
• Programação do chip não pode ser feita durante a execução do programa.
• Por esse motivo, as funções /MCLR e VPP podem usar o mesmo pino, jamais serão usadas ao mesmo tempo.
RESET
4
140 15/12/2016
• Power-on Reset.
• Ocorre na borda positiva aplicada aos pino /MCLR e VDD. • É o tipo de reset mais forte.
• O flag /POR é ativado (NOT_POR = 0).
• O program counter aponta para o reset vector (0000h). • GPR’s, SFR’s e demais registradores são reiniciados.
POR
PORRESET
4
141 15/12/2016 • A alimentação é mantida.• Os procedimentos de iniciação não são retomados. • Ocorre na borda positiva aplicada aos pino /MCLR. • O flag /PORnãoé ativado (NOT_POR = 1).
• O program counter aponta para o reset vector (0000h). • GPR’s, SFR’s e demais registradores são reiniciados.
/MCLR
RESET
4
142 15/12/2016 • Brown-out Reset• Ocorre em falha no provimento de energia elétrica ao chip. • BOR faz o chip parar de funcionar em caso de falha elétrica. • É uma segurança para evitar que ocorra erro na execução
do programa por falha na alimentação.
• Em alimentação pela rede elétrica, esse problema pode 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). • GPR’s, SFR’s e demais registradores são reiniciados.
BOR
RESET
4
143 15/12/2016
• O mínimo valor de VDDaceito é chamado de BVDD. • O chip entra em estado de reset quando VDD< BVDD. • O chip permanece em reset até que VDD> BVDD. • Existe uma histerese, de modo que, para sair do BOR,
é preciso um pequeno incremento acima de BVDD. • Esta histerese proposital age como um filtro
passa-baixas e evita que a PICentre e saia do POR ou do BOR em uma oscilação de alta frequência, o que poderia danificar o circuito.
• Esta oscilação pode ser decorrente de um defeito na fonte de alimentação.
POR/BOR
RESET
4
144 15/12/2016• A distinção entre POR e BOR se deve ao quão baixa é a tensão de alimentação.
• Se esta tensão está próxima de VSS , há um POR. • Se esta tensão está próxima de BVDD , há um BOR.
POR/BOR
• O valor típico para VDDé de 5V. • Quando a tensão cai abaixo de
BVDD, o BOR é ativado. • O valor típico para BVDDé de 4V. • Quando a tensão cai abaixo de
145 15/12/2016
POR/BOR
Power Control Register
• PCON 010001110b, 08Eh, banco 1
• Um valor zero indica que o respectivo reset ocorreu. • Deve ser convertido para 1 manualmente.
• Não aceita BCF.
146 15/12/2016
• Power-up timer.
• Acionado com POR ou por BOR.
• Utiliza um par RC interno e de uso exclusivo. • É um temporizador analógico.
• Duração típica de 72ms.
• Usado para dar tempo para todo os procedimentos de reset serem aplicados.
• O valor do tempo depende de diversos parâmetros.
PWRT
RESET
4
147 15/12/2016
• Quando VDD> BVDDe a histerese é vencida, há um retardo de 72ms antes do chip voltar a operar. • A temporização é do tipo RC e, por isso, a
duração não é precisa.
• 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. • A máxima frequência de oscilação permitida é
dada por 1/72ms.
PWRT
RESET
4
148 15/12/2016 Histerese Borda positiva Borda negativa t Mínimo períodoMáxima frequência de oscilação Mínimo período
• 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.
• BVDDé a tensão abaixo da qual o chip para de funcionar.
BVDD Disparo de PW RT
PWRT
RESET
4
149 15/12/2016• 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
VDDe VSSdeve ser usado para suavizar esse pico. • 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.
PWRT
RESET
4
150 15/12/2016 Pino 32 Pino 32 Pino 32PWRT
RESET
4
151 15/12/2016
• Configurado por meio do configuration bit /PWRTE. • Power-up Timer Enable bit.
• 0: Habilitado.
• 1: Desabilitado (reset default).
• Independentemente de /PWRTE, PWRT está habilitado se BOR está habilitado.
• Brown-out Reset Enable bit. • 0: Desabilitado.
• 1: Habilitado (reset default).
PWRT
RESET
4
152 15/12/2016
• Oscillator Start-up Timer. • É um contador digital.
• Gera um atraso de 1024 ciclos do oscilador. • Disparado pelo término do atraso gerado por PWRT. • Isso garante que a oscilação está estável.
• Usado, apenas, nos modos XT, HC, LP e oscilador externo. • Usado em POR, BOR e em wake-up.
OST
RESET
4
153 15/12/2016
• É 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.
OST
RESET
4
154 15/12/2016Módulos
(2)Ausente na PIC16F877RESET
4
155 15/12/2016Eventos do POR – situação 1
Início Retardo Pino 32 Pino 1 72ms
RESET
4
156 15/12/2016Eventos do POR – situação 2
Início Retardo
Pino 32
Pino 1
157 15/12/2016
Eventos do POR – situação 3
Início Retardo Pino 32 Pino 1 72ms 158 15/12/2016
• Nestes três exemplos, é possível observar que as três temporizações são gatilhadas pelo evento da energização do sistema e não do sinal no pino /MCLR.
Exemplos
RESET
4
159 15/12/2016
• STATUS Status Register 083h
• NOT_TO Time-Out bit
• NOT_PD Power-Down bit
• PCON Power Control Register 08Eh
• NOT_PER* Memory ParityError Reset Status bit
• NOT_POR Power-on Reset Status bit
• NOT_BOR Brown-out Reset Status bit
Bits
*Ausente na PIC16F877RESET
4
160 15/12/2016• Power-on Reset Status bit. • 1: Não houve um POR.
• 0: Houve um POR.
• Brown-out Reset Status bit. • 1: Não houve um BOR.
• 0: Houve um BOR.
Bits
• Os bits NOT_POR e NOT_POR são
configurados para zero automaticamente quando o evento descrito ocorre.
• A fim de que esses bits possam, novamente, identificar os eventos, é necessário configurá-los para um manualmente.
RESET
4
161 15/12/2016
Wake-up
• O wake-up permite que o programa retome do ponto onde havia parado. • O valor do PC é preservado. • O wake-up pode ser feito por:
• WDT.
• /MCLR.
• Interrupção que não dorme. • OST é acionado.
RESET
4
162 15/12/2016Bits
/POR /BOR /TO /PD Explicação
1 1 1 1 Não houve nada.
0 1 1 1 Houve um Power-On reset.
1 0 1 1 Houve um Brown-Out reset.
1 1 0 1 Houve um WDT reset.
1 1 1 0 Houve um wake-up via /MCLR.
0 0 x x Ilegal. Se o chip acabou de ser ligado,
não pode ter havido Brown-Out reset.
0 x 0 x Ilegal. Se o chip acabou de ser ligado,
não pode ter havido WDT time-out.
0 x x 0 Ilegal. Se o chip acabou de ser ligado,
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.
RESET
4
163 15/12/2016
Situações ilegais
• Se houve um power-on-reset, a ocorrência de um brown-out-reset anterior é irrelevante. • Se houve um power-on-reset, a ocorrência de um WDT-time-out anterior é irrelevante. • Se houve um power-on-reset, a ocorrência
de um power-down anterior é irrelevante. • Se houve um brown-out-reset, a ocorrência
de um power-on-reset anterior é irrelevante. • Se houve um WDT-time-out, a ocorrência de
um power-on-reset anterior é irrelevante. • Se houve um power-down, a ocorrência de
um power-on-reset anterior é irrelevante.
/POR /BOR /TO /PD
0 0 x x 0 x 0 x 0 x x 0
RESET
4
164 15/12/2016Situações ilegais
/POR /BOR /TO /PD
0 0 x x
0 x 0 x
0 x x 0
• Quando um evento acontece, seu
bit correspondente vai para zero.
• Se há outro bit valendo zero, este
bit passa para um automaticamente.
TEMPORIZAÇÃO
5
165 15/12/2016TEMPORIZAÇÃO
TEMPORIZAÇÃO
5
166 15/12/2016Contador
• 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. • Contadores são, preferencialmente, construídos na forma
síncrona, isto é, todos osFF’s operam à mesma frequência. • Contadores síncronos são, preferencialmente, construídos por meio deFF’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 deFF’s D.
• O término da contagem é chamado de overflow.
TEMPORIZAÇÃO
5
167 15/12/2016Temporizador
• Timer.• Há diversos tipos de temporizadores, incluindo analógicos e mecânicos.
• Temporizador digital é um tipo particular de contador. • O nome temporizador é usado quando o valor
instantâneo da contagem não é acessado, interessa, apenas, o término da contagem, quando ocorre overflow. • O término da temporização é chamado de time-out (/TO
– término do período de contagem).
• Em alguns chips temporizadores/contadores, o bit /TO permanece ativo em um ou meio ciclo de clock.
TEMPORIZAÇÃO
5
168 15/12/2016
Temporizador
• O TO ocorre na borda negativa do bit mais significativo. • Por esse motivo, esse bit é chamado de /TO.
• Esse bit pode ser usado em controle por borda. Q0
Q1 Q2 Q3
169 15/12/2016
Temporizadores comerciais
• Em muitos chips contadores comerciais, existe uma saída de sinalização de overflow.
• Esta saída pode ser em nível alto ou em nível baixo. • Geralmente, a sinalização ocorre no primeiro
semi-ciclo da contagem. CLK Q0 Q1 Q2 Q3 OF /TO 170 15/12/2016
Contador assíncrono
• Temporizadores são construídos, preferencialmente, a partir de contadores assíncronos.
• No contador assíncrono, os FF’s operam no modo
toogle switch (divisor de frequência por 2).
• Contadores assíncronos empregam,
preferencialmente,FF’s D, mais simples do que os JK. • Contadores assíncronos são piores do que os síncronos porque alguns bits de saída apresentam
spikes em alguns transitórios.
• Como temporizadores usam, apenas, o bit mais significativo, e este é usado como relógio, a questão dos spikes não é problema.
TEMPORIZAÇÃO
5
171 15/12/2016
Contadores com FF JK
Exemplo para 4 bits Assíncrono Síncrono
TEMPORIZAÇÃO
5
172 15/12/2016Sincronicidade
• A terminologia “síncrono” pode assumir dois significados diferentes neste contexto. • Significado usado em circuitos digitais:
Todos osFF’s operam à mesma frequência.
• Significado usado em contadores
integrados em MCU´s: A contagem ocorre à mesma frequência de instruções da MCU. • Nos slides seguintes, será adotado o
segundo significado. USAREMOS
TEMPORIZAÇÃO
5
173 15/12/2016Temporizadores na PIC
• A PIC16F877 possui três temporizadores registrados e programáveis:
• TIMER0. • TIMER1. • TIMER2.
• Por serem SFR’s, contam de forma síncrona e podem ser usados como contadores.
• Alguns contadores oferecem a opção de serem operados em modo assíncrono.
• A registração (SFR) é o próprio contador, tal como acontece com PCL.
TEMPORIZAÇÃO
5
174 15/12/2016
Escaladores
• Além destes há outros temporizadores não registrados, não podem ser usados como contadores acessáveis ao código assembly. • Podem executar dois tipos de função:
• Contador Prescaler. (pré escalador) • Contador Postscaler . (pós escalador) • Ambos atuam como temporizadores, de
modo que o valor instantâneo não interessa. • Somente interessa o envio do sinal de