• Nenhum resultado encontrado

Parte 3 RECURSOS INTERRUPÇÕES INTERRUPÇÕES INTERRUPÇÕES INTERRUPÇÕES INTERRUPÇÕES

N/A
N/A
Protected

Academic year: 2021

Share "Parte 3 RECURSOS INTERRUPÇÕES INTERRUPÇÕES INTERRUPÇÕES INTERRUPÇÕES INTERRUPÇÕES"

Copied!
59
0
0

Texto

(1)

1

Parte 3

RECURSOS

15/12/2016 15/12/2016 2

1. 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/2016

INTERRUPÇÕES

INTERRUPÇÕES

1

4 15/12/2016

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. • 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/2016

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

(2)

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

Interrupçã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/2016

INTCON

INTCON • Registrador 000001011b, 00Bh, banco 0 • Registrador 010001011b, 08Bh, banco 1 • Registrador 100001011b, 10Bh, banco 2 • Registrador 110001011b, 18Bh, banco 3 • Registrador XX0001011b

(3)

13 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/2016

INTCON

• 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/2016

INTCON

• 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

(4)

INTERRUPÇÕES

1

19 15/12/2016

Interrupções periféricas

EEIF PSPIF ADIF TMR1IF TMR2IF CCP1IF CCP2IF RCIF TXIF SSPIF BCLIF

INTERRUPÇÕES

1

20 15/12/2016

Envio do pedido de interrupção

Outras interrupções Peripheral Interrupt

INTERRUPÇÕES

1

21 15/12/2016

Registradores

• 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/2016

Registradores

INTCON PIR1 PIR2 PIE1 PIE2

INTERRUPÇÕES

1

23 15/12/2016

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

(5)

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/2016

Efeito da interrupção

Programa Rotina de interrupção RETFIE Instante no qual ocorre a solicitação de interrupção

INTERRUPÇÕES

1

29 15/12/2016

Efeito 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/2016

Efeito 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

. .

(6)

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/2016

Interrupt flag

IF

t

1 0 T0IF INTIF RBIF EEIF PSPIF ADIF TMR1IF TMR2IF CCP1IF CCP2IF RCIF TXIF SSPIF BCLIF

INTERRUPÇÕES

1

34 15/12/2016

Rotina 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/2016

Seleçã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/2016

Seleção de eventos – Opção 2

Programa Rotina de interrupção

Rotina de identificação do evento GOTO GOTO RETFIE

(7)

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/2016

Terminologia

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

(8)

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

(9)

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/2016

EEPROM

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/2016

Flash

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/2016

Flash

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

(10)

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

(11)

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 0

ACESSO À 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

1

(12)

ACESSO À 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 interromper

EEPROM – 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 PICao identificar o erro. • EECON1<3> recebe“0” manualmente.

• BCF EECON1, WRERR.

(13)

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

(14)

ACESSO À MEMÓRIA

2

Flash 13-bit MUX 31 Seleção 14-bit MUX 31 Seleção 14-bit DEMUX 13 Seleção Address Data in Data out PC EEADR ICD2 Não usado EEDATA ICD2 Instruction Register EEDATA ICD2

Flash

79 15/12/2016 S1 S0 Uso 0 0 Busca (fetch) 0 1 Comando RD ou WR 1 0 ICD2 1 1 – Modelo conceitual

CLOCK

3

80 15/12/2016

CLOCK

CLOCK

3

81 15/12/2016

Definiçã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/2016

Definiçã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/2016

Pinagem

OSC1/CLKIN OSC2/CLKOUT

CLOCK

3

84 15/12/2016

Pinagem

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

(15)

• 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/2016

Oscilador

(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

(16)

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=0V

I

t = 0

+ V

R

– V

C

+

VC0>0V

I

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

SOURCE

V

0

V

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.

(17)

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

CLOCK

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

(18)

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ção

104 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/2016

CLOCK

3

Histerese digital

Buffer ST NOT ST Exemplos 108 15/12/2016

(19)

Histerese 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/2016

CLOCK

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 1

CLOCK

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

(20)

CLOCK

3

115 15/12/2016

RC

Oscilador externo CLKIN CLKOUT

CLOCK

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 externo

CLOCK

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 externo

CLOCK

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 externo

CLOCK

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

• 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 interno

CLOCK

3

120 15/12/2016

RC

Oscilador interno

(21)

121 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/2016

Oscilador

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 interno

CLOCK

3

123 15/12/2016

LP/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 interno

CLOCK

3

125 15/12/2016

LP/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/2016

LP/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

(22)

CLOCK

3

127 15/12/2016

Oscilador

f máx

T (mín)

LP

200kHz

5s

XT

4MHz

250ns

HS

20MHz

50ns

LP/XT/HS

Oscilador interno

CLOCK

3

128 15/12/2016

LP/XT/HS – Iniciação

Oscilador interno

CLOCK

3

129 15/12/2016

LP/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/2016

LP/XT/HS

Oscilador externo MCU 1 MCU 2 MCU 3 MCU 4

CLOCK

3

131 15/12/2016 Série Paralelo

LP/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

(23)

133 15/12/2016

RESET

134 15/12/2016

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 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/P

RESET

4

136 15/12/2016

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

Pinagem

• /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/2016

Pinagem

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

(24)

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

POR

RESET

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 PICentre 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

(25)

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íodo

Má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 32

PWRT

(26)

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/2016

Módulos

(2)Ausente na PIC16F877

RESET

4

155 15/12/2016

Eventos do POR – situação 1

Início Retardo Pino 32 Pino 1 72ms

RESET

4

156 15/12/2016

Eventos do POR – situação 2

Início Retardo

Pino 32

Pino 1

(27)

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 PIC16F877

RESET

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/2016

Bits

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

(28)

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/2016

Situaçõ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/2016

TEMPORIZAÇÃO

TEMPORIZAÇÃO

5

166 15/12/2016

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. • 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/2016

Temporizador

• 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

(29)

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/2016

Sincronicidade

• 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/2016

Temporizadores 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

Referências

Documentos relacionados

No primeiro, avaliaram-se o pH, a relação nitrogênio amoniacal/nitrogênio total (N-NH3/Ntotal), a composição química e a digestibilidade in vitro da matéria seca (DIVMS) de

até a data do óbito do segurado, mantenha-se em união estável com este, devidamente reconhecida por sentença proferida em procedimento judicial de

Selecione a opção “Enviar usuários” para exportar todos os usuários, código de barras, Cartão de proximidade, senha e digitais cadastradas para o Pendrive.

Objective: To compare the transparent 3D computed tomography (CT) image protocol against conventional 3D-CT image-rendering protocol to assess femoral tunnel position in

No geral podemos observar que os resultados dos frutos da estufa S são mais homogéneos, apresentando menores desvios, do que os da estufa A, no entanto, embora

Os processos que contribuem mais directamente para a erosão na área de estudo são a precipitação e o gelo, enquanto que, indirectamente, são o relevo e os incêndios florestais e,

I – estudantes que tenham cursado integralmente o Ensino Fundamental ou Ensino Médio em escolas públicas, em cursos regulares ou no âmbito da modalidade da Educação de Jovens

A área que tem como foco estabelecer diretrizes e estratégias de Ciência, Tecnologia e Inovação da Fundação CERTI atuou, prioritariamente, em duas frentes, durante