Sistemas Microcontrolados Sistemas Microcontrolados

Post on 24-Feb-2023

0 views 0 download

transcript

Sistemas MicrocontroladosSistemas Microcontrolados

Período 2009.2Aula 7Aula 7

1 Saulo O. D. Luiz

Roteiro

InterrupçõesInterrupçõesIntroduçãoRegistradoresRegistradoresContexto da aplicaçãoFontes de interrupçõesFontes de interrupções

2 Saulo O. D. Luiz

Interrupções

Permitem que o microcontrolador responda a eventos quando eles ocorremresponda a eventos quando eles ocorremPara atender a um evento, o

i t l d tmicrocontrolador executa um subprograma: a rotina de atendimento de i t ãinterrupção

3 Saulo O. D. Luiz

Interrupções

Exemplo de interrupção externa14 f t d i t ã14 fontes de interrupçãoHabilitação: registradores INTCON, PIE1 e PIE2PIE2GIE (bit 7, registrador INTCON)

habilita a CPU a receber req isições dehabilita a CPU a receber requisições de interrupção

bit de habilitação individual da interrupçãobit de habilitação individual da interrupçãobit de flag

sinaliza a ocorrência do evento associado a

4 Saulo O. D. Luiz

sinaliza a ocorrência do evento associado a interrupção

Interrupções

Condição para solicitação de uma interrupção:interrupção:

Habilitação simultânea deGIEGIEbit de habilitação individual da interrupçãobit de flagbit de flag

5 Saulo O. D. Luiz

Interrupções

família PIC 16F87x 14 f t d i t ã14 fontes de interrupçãoPrograma

sendoexecutado

6 Saulo O. D. Luiz

Estrutura de habilitação das interrupções

7 Saulo O. D. Luiz

RegistradoresRegistradores

8 Saulo O. D. Luiz

Registrador INTCON

Endereço 0x0BC t bit d h bilit ã dContem os bits de habilitação das interrupções

9 Saulo O. D. Luiz

Registrador INTCON

Bit 0 RBIF (flag que indica variação na porta B): Bit que informa que houve mudança nos níveis lógicos nos pinos 4 5 6 ou 7 da porta Bhouve mudança nos níveis lógicos nos pinos 4, 5, 6 ou 7 da porta B.1= pelo menos um destes pinos mudou de nível lógico0= não ocorreu nenhuma variação nestes pinos

Bit 1 INTF (flag de interrupção externa INT): Ocorrência de uma interrupção externa 1= ocorreu uma interrupção externa

10 Saulo O. D. Luiz

0= não ocorreu uma interrupção externa

Registrador INTCON

Bit 2 TOIF (Flag de interrupção por transbordo de TMR0): O contador TMR0, transbordou.1= o contador mudou a contagem de FFh para 00h0= o contador não transbordouPara que esta interrupção seja detectada, o programa deve resetar este bit.

Bit 3 RBIE (bit de habilitação de interrupção por variação na porta B): Habilitação da interrupção por variação dos níveis lógicos nos pinos 4, 5, 6 e 7 da porta B.1= habilita a interrupção por variação dos níveis lógicos0= inibe a interrupção por variação dos níveis lógicos

11 Saulo O. D. Luiz

A interrupção só pode ocorrer se RBIE e RBIF estiverem simultaneamente em ‘1’ lógico.

Registrador INTCON

Bit 4 INTE (bit de habilitação da interrupção externa INT): Bit que habilita uma interrupção externa no bit RB0/INT.1= interrupção externa habilitada0= interrupção externa desabilitadaA interrupção só pode ocorrer se INTE e INTF estiverem simultaneamente em‘1’ lógico.

Bit 5 TOIE (bit de habilitação de interrupção por transbordo de TMR0): Bit que habilita a interrupção por transbordo do contador TMR0.1= interrupção habilitada0= interrupção desabilitada

12 Saulo O. D. Luiz

A interrupção só pode ocorrer se TOIE e TOIF estiverem simultaneamente em ‘1’ lógico.

Registrador INTCON

Bit 6 PEIE (bit de habilitação de interrupção dos periféricos): Bit que habilita as interrupções geradas pelos periféricos.g1= habilita todas as interrupções dos periféricos0= desabilita todas as interrupções dos periféricos

Bit 7 GIE (bit de habilitação global de interrupção): Bit que habilita ou desabilita todas as interrupções. 1= todas as interrupções são permitidas0= todas as interrupções impedidasGIE permite que a execução de uma parte crítica do programa não seja interrompida por

13 Saulo O. D. Luiz

uma interrupção

Registrador PIE1

Endereço 0x8CC t bit d h bilit ã dContem os bits de habilitação das interrupções de periféricos

14 Saulo O. D. Luiz

Registrador PIE1

Bit 0 (bit TMR1IE, habilitação da interrupção do TMR1) – Este bit habilita a interrupção gerada quando ocorre um “overflow” no contador do Timer 1, TMR1 ou seja quando o contador conta de FFFFh para 0000hTMR1, ou seja, quando o contador conta de FFFFh para 0000h. 1= habilita interrupção0= desabilita interrupçãoBit 1 (bit TMR2IE, habilitação da interrupção do TMR2) – Este bit habilita a interrupção gerada quando os valores do contador do Timer 2, TMR2 e o valor do registrador PR2 coincidem 1= habilita interrupção0= desabilita interrupção

15 Saulo O. D. Luiz

0= desabilita interrupção

Registrador PIE1

Bit 2 (bit CCP1IE, habilitação da interrupção do bloco CCP1) – Este bit habilita a interrupção gerada por um evento de Capture ou Compare do bloco CCP1CCP1 .1= habilita interrupção do bloco CCP1.0= desabilita interrupção do bloco CCP1.

Bit 3 (bit SSPIE, habilitação da interrupção da porta serial síncrona) –Este bit habilita uma interrupção gerada por uma de um conjunto de condições associadas a porta serial assíncrona..1= habilita a interrupção da SSP (Synchronous Serial Port)

16 Saulo O. D. Luiz

1= habilita a interrupção da SSP (Synchronous Serial Port)0= desabilita a interrupção da SSP (Synchronous Serial Port)

Registrador PIE1

Bit 4 (bit TXIE, habilitação da interrupção de transmissão da USART) –Este bit habilita uma interrupção quando é concluída a transmissão de um byte pela USART (buffer de transmissão vazio)pela USART (buffer de transmissão vazio).1= interrupção habilitada0= interrupção desabilitada

Bit 5 (bit RCIE, habilitação da interrupção de recepção da USART) – Este bit habilita a interrupção quando um byte é recebido pela USART (buffer de recepção cheio).1= interrupção habilitada

17 Saulo O. D. Luiz

1= interrupção habilitada.0= interrupção desabilitada

Registrador PIE1

Bit 6 (bit ADIE, habilitação da interrupção do conversor A/D) – Este bit habilita uma interrupção gerando pela conclusão de uma conversão A/D.habilita uma interrupção gerando pela conclusão de uma conversão A/D.1= interrupção habilitada0= interrupção desabilitada.

Bit 7 (bit PSPIE h bilit ã d i t ã d t l l )Bit 7 (bit PSPIE, habilitação da interrupção da porta paralela escrava) –Este bit habilita uma interrupção gerada por uma operação de escrita/leitura na porta paralela (porta D).1= todas as interrupções são permitidas

18 Saulo O. D. Luiz

pç p0= todas as interrupções impedidas

Registrador PIR1

Endereço 0x0CC t bit d fl d i t õContem os bits de flag das interrupções de periféricos

19 Saulo O. D. Luiz

Registrador PIR1

Bit 0 (bit TMR1IF, indica a ocorrência de um overflow do contador TMR1)– Este bit indica a ocorrência de um “overflow” no contado TMR1, ou seja, o contador contou de FFFFh para 0000hcontador contou de FFFFh para 0000h.1 = ocorreu um “overflow” em TMR10 = não ocorreu “overflow” em TMR1.

Bit 1 (bit TMR2IF, indica que os valores de TMR2 e PR2 coincidem) – Este bit indica a ocorrência do evento em que o valor do registrador de contagem do Timer 2, TMR2, coincide com o valor armazenado no registrador PR2.1 = TMR2 é igual a PR2

20 Saulo O. D. Luiz

1 = TMR2 é igual a PR20 = TMR2 é diferente de PR2.

Registrador PIR1Bit 2 (bit CCP1IF, indica se um evento de Capture ou Compare do módulo CCP1 ocorreu) – Este bit indica a ocorrência de um dos evento abaixo no módulo CCP1:Modo “capture”1 = Um evento de captura do valor de contagem do TMR1 ocorreu1 = Um evento de captura do valor de contagem do TMR1 ocorreu0 = Nenhum evento de captura ocorreu;Modo “compare”1 = Um evento de comparação (valor de contagem do TMR1 coincidiu com valor do registrador de comparação) ocorreuregistrador de comparação) ocorreu0 = Nenhum evento de comparação ocorreu;Modo PWM

Não usado nesse modo.

Bit 3 (bit SSPIF, indica se um evento do conjunto associado a porta serial síncrona ocorreu) – Este bit indica a ocorrência de um dos evento abaixo na porta serial síncrona:síncrona:1 = SPI – Uma transmissão/recepção ocorreu;0 = Nenhuma condição de interrupção do módulo SSP ocorreu.

21 Saulo O. D. Luiz

Registrador PIR1

Bit 4 (bit TXIF, indica se um byte já foi enviado pela USART) – Este bit indica o evento decorrente da transmissão completa de um byte que foi enviado a USART pela CPUenviado a USART pela CPU.

1= buffer de transmissão da USART vazio 0= buffer de transmissão da USART cheio.

Bit 5 (bit RCIF, indica se o buffer de recepção da USART possui um byte novo) – Este bit indica o evento decorrente da recepção de um byte pela porta serial assíncrona (USART).

1= buffer de recepção da USART cheio

22 Saulo O. D. Luiz

1= buffer de recepção da USART cheio 0= buffer de recepção da USART vazio.

Registrador PIR1

Bit 6 (bit ADIF, indica conclusão de uma conversão A/D) – Este bit indica se o conversor A/D concluiu uma conversão analógica/digital.o conversor A/D concluiu uma conversão analógica/digital. 1= conversão concluída 0= conversão não concluída.

Bit 7 (bit PSPIF i di ã d it /l it t l lBit 7 (bit PSPIF, indica operação de escrita/leitura na porta paralela escrava) – Este bit indica o evento decorrente de uma operação de escrita/leitura na porta paralela escrava. 1= uma operação de leitura ou escrita ocorreu na porta paralela

23 Saulo O. D. Luiz

p ç p p0= não ocorreu nenhuma operação de leitura ou escrita na porta paralela

Contexto da aplicação

Durante uma interrupção, o único valor salvo é o do contador de programasalvo é o do contador de programaMas há outros registradores importantes

i i l Wpara o programa principal, e.g. o W e o STATUS

24 Saulo O. D. Luiz

Contexto da aplicação

25 Saulo O. D. Luiz

Contexto da aplicação

Operação para salvar registradores importantes antes de desviar para a subrotina de interrupçãoantes de desviar para a subrotina de interrupção

PUSHOperação para recuperar valores importantesOperação para recuperar valores importantes após o atendimento da subrotina de interrupção

POP

26 Saulo O. D. Luiz

Contexto da aplicação

Ex. PUSH e POP:PUSHPUSH

MOVWF w_temp ;Salva o valor de W num registrador temporárioSWAPF STATUS,W ;Swap em status e o copia em WCLRF STATUS ;banco 0, Limpar IRP,RP1,RP0MOVWF t t t S l STATUS i t d t á iMOVWF status_temp ;Salva STATUS em um registrador temporáriogoto CODIGO_ISR

CODIGO_ISR;(ISR);(ISR);

POPSWAPF status_temp,W ;Swap em status_temp e o copia em W

( l d b d ó i é t d );(selecao de banco de memória é restaurada)MOVWF STATUS ;Restaurar STATUSSWAPF w_temp,F ;Swap em w_tempSWAPF w_temp,W ;Swap em w_temp e copia em W

27 Saulo O. D. Luiz

Contexto da aplicação

Ex. PUSH e POP como macros:PUSH macroPUSH macro

MOVWF w_temp ;Salva o valor de W num registrador temporárioSWAPF STATUS,W ;Swap em status e o copia em WCLRF STATUS ;bank 0, Limpar IRP,RP1,RP0MOVWF status_temp ;Salva STATUS em um registrador temporário

endm ;Fim do macro PUSHendm ;Fim do macro PUSH

POP macroSWAPF status_temp,W ;Swap em status_temp e o copia em W

;(selecao de banco de memória é restaurada)MOVWF STATUS ;Restaurar STATUSSWAPF w_temp,F ;Swap em w_tempSWAPF w_temp,W ;Swap em w_temp e copia em W

endm ;Fim do macro POP

;;;;

MOVLW 0X06PUSHADDLW 0X02 ;Alterou W e STATUS

28 Saulo O. D. Luiz

;POP

Fontes de interrupçõesFontes de interrupções

29 Saulo O. D. Luiz

Interrupção externa no pino RB0/INT

Transição positivaSe o bit INTEDG = 1 no registrador OPTION<6>Se o bit INTEDG = 1 no registrador OPTION<6>

Transição negativaSe o bit INTEDG = 0 no registrador OPTION<6>Se o bit INTEDG 0 no registrador OPTION 6

30 Saulo O. D. Luiz

Interrupção externa no pino RB0/INT

Programasendo sendo

executado

INTF = 1

BCF INTCON INTF Limpar o bit para q eBCF INTCON,INTF ; Limpar o bit para que; o programa; não volte à rotina

31 Saulo O. D. Luiz

Interrupção externa no pino RB0/INT

Para inibir a interrupçãoLimpar o bit de habilitação INTE (INTCON<4>)Limpar o bit de habilitação INTE (INTCON<4>)

32 Saulo O. D. Luiz

Interrupção devido ao “overflow” do contador TMR0

overflow do contador TMR0 passagem de FFh para 00hseta o bit TOIF (INTCON<2>)

Para inibir a interrupçãoLimpar o bit de habilitação TOIE (INTCON<5>)

33 Saulo O. D. Luiz

Interrupção devido ao “overflow” do contador TMR0

overflow do contador TMR0 passagem de FFh para 00hseta o bit TOIF (INTCON<2>)

P i ibi i ãPara inibir a interrupçãoLimpar o bit de habilitação TOIE (INTCON<5>)

34 Saulo O. D. Luiz

Interrupção por variação nos pinos 4, 5, 6 e 7 do porto B

variação em um dos 4 bits de entrada da Porta çB (bits 4 a 7)

seta o bit RBIF (INTCON<0>)Os pinos devem ser definidos como entradas

Para inibir a interrupçãoPara inibir a interrupçãoLimpar o bit de habilitação RBIE (INTCON<3>)

35 Saulo O. D. Luiz

Interrupção por fim de escrita na EEPROM

Fim da operação de escritap çseta o bit EEIF do registrador EECON1

Para inibir a interrupçãopLimpar o bit de habilitação EEIE do registrador INTCON

36 Saulo O. D. Luiz

Iniciação da interrupção

Procedimentos para que o microcontrolador p qpossa atender a interrupçõesHabilitar as interrupções às quais se deseja atender

37 Saulo O. D. Luiz

Iniciação da interrupção

Ex. iniciação da interrupção externa no pino RB0RB0

CLRF INTCON ;Desabilita todas as interrupçõesBSF INTCON,GIE ;Habilitar a CPU a atender interrupçõesBSF INTCON INTE ;Habilitar a interrupção externaBSF INTCON,INTE ;Habilitar a interrupção externa

38 Saulo O. D. Luiz

Comandos para retorno da rotina de i t ãinterrupção

39 Saulo O. D. Luiz

Ex.: Atendimento a interrupções

Salvando o contexto

w_temp EQU 0x7E ; variável para salvar o contextostatus_temp EQU 0x7F ; variável para salvar o contexto

;***** DEFINICOES DE MACROS; DEFINICOES DE MACROSPUSH macro

MOVWF w_temp ;Salva o valor de W num registrador temporárioSWAPF STATUS,W ;Swap em status e o copia em WCLRF STATUS ;bank 0, Limpar IRP,RP1,RP0MOVWF status_temp ;Salva STATUS em um registrador temporário

endm ;Fim do macro PUSH

POP macroSWAPF status_temp,W ;Swap em status_temp e o copia em W

;(selecao de banco de memória é restaurada)MOVWF STATUS ;Restaurar STATUSMOVWF STATUS ;Restaurar STATUSSWAPF w_temp,F ;Swap em w_tempSWAPF w_temp,W ;Swap em w_temp e copia em W

endm ;Fim do macro POP

40 Saulo O. D. Luiz

Ex.: Atendimento a interrupções

Macros para seleção de bancosBANK0 MACROBANK0 MACRO

BCF STATUS,RP0BCF STATUS,RP1BCF STATUS,IRPENDM

BANK1 MACROBSF STATUS,RP0BCF STATUS,RP1BCF STATUS,IRPENDM

BANK2 MACROBCF STATUS,RP0BSF STATUS,RP1BSF STATUS,IRPENDMENDM

BANK3 MACROBSF STATUS,RP0BSF STATUS,RP1BSF STATUS,IRP

41 Saulo O. D. Luiz

,ENDM

Ex.: Atendimento a interrupções

Rotinas de atendimento de interrupção

ORG 0x004 ; interrupt vector locationPUSH ;Salvar o contextoBTFSC INTCON,RBIF;Testa se houve variação nos pinos 4, 5, 6 e 7 da porta Bç p pgoto ISR_PORTB ;Ir para a rotina de atendimento de interrupção da porta BBTFSC INTCON,INTF;Testa se houve interrupção externa em RB0goto ISR_RB0 ;Ir para a rotina de atendimento de interrupção externa em RB0BTFSC INTCON,T0IF ;Testa se houve overflow no TMR0goto ISR TMR0 ;Ir para a rotina de atendimento de interrupção do TMR0goto ISR_TMR0 ;Ir para a rotina de atendimento de interrupção do TMR0BANK1 ;Selecionar banco 1 para acessar EECON1BTFSC EECON1,EEIF ;Testa se a escrita na EEPROM foi finalizadagoto ISR_EEPROM ;Ir para a rotina de atendimento de interrupção da EEPROMBANK0

ISR_PORTB;rotina de atendimento de interrupção goto END_ISR ;saída da rotina de atendimento de interrupção

42 Saulo O. D. Luiz

Iniciação da interrupção

Rotinas de atendimento de interrupçãoISR_RB0;rotina de atendimento de interrupção ADDLW 0X02 ;Alterou W e STATUS (instrução dumb para testar o POP)BCF INTCON,INTF ; Limpar o bit para que o programa não volte à rotina goto END ISR ;saída da rotina de atendimento de interrupçãogoto END_ISR ;saída da rotina de atendimento de interrupção

ISR_TMR0;rotina de atendimento de interrupção goto END_ISR ;saída da rotina de atendimento de interrupção

ISR_EEPROM;rotina de atendimento de interrupção goto END_ISR ;saída da rotina de atendimento de interrupção

END_ISR

POP ;Recuperar o contexto

RETFIE ;retorna e habilita GIE

43 Saulo O. D. Luiz

RETFIE ;retorna e habilita GIE