Vous êtes sur la page 1sur 14

UNIVASF

Microprocessadores e
Microcontroladores
Interrupes
Prof. Rodrigo Ramos
godoga@gmail.com

Interrupes
Evento externo ao programa que provoca sua parada, verificao e
tratamento do evento, aps o que o programa retorna ao ponto em que
havia sido interrompido.

Utilizadas para que CPU atenda eventos de alta prioridade.

Ciclo de instruo:

instruo atual completada;

contedo do PC armazenado na pilha;


programa desviado para endereo conhecido como vetor de
interrupes (0x0004 no PIC)

Sub-rotina no vetor de interrupes para tratamento e retorno.

Dois tipos:
No mascarvel: evento atendido imediatamente e no pode ser
desativado (mascarado);

Mascarvel: evento atendido desde no esteja desabilitado.

Interrupes
No PIC, s esto implementadas interrupes mascarveis (com
bit de habilitao).

Os primeiros PICs possuam apenas quatro tipos (controladas


pelo registrador INTCON):

interrupo externa (INTF);

int. por mudana lgica no PORTB (RBIF);

int. do Timer 0 (T0IF);

int. de perifrico (EEPROM EEIF, Conversor A/D ADIF).

Com a evoluo, criou-se outra arquitetura para permitir novas


interrupes, mantendo INTCON (com as trs primeiras) e demais
chamadas de int. de perifricos:

Reg. PIEx: controle de habilitao individual

Reg. PIRx: sinalizao dos eventos de interrupo.

Interrupes (cont.)

PIC16F877A tem 15 interrupes distintas.

Seu funcionamento baseia-se em quatro bits (ativos nvel '1'):


GIE (Global Interrupt Enable): bit de controle geral das
interrupes (chave geral) ;

PEIE (Peripheral Interrupt Enable): bit de controle das


interrupes de perifricos;

Controle individual das interrupes: bit de habilitao


individual (bit E);

Sinalizador (flag) individual de interrupo: bit F, ativado pela


fonte de interrupo na ocorrncia de um evento.

Interrupes (cont.)
PIEx/PIRx

INTCON

Interrupo de perifricos

Interrupes (cont.)

Ocorrncia de interrupo:

Bit F correspondente setado;

Se GIE = 1, endereo da prxima instruo salvo na pilha;

Bit GIE ressetado;

Programa desvia para endereo 0x0004.

Aps tratamento, uma instruo retfie far GIE = 1 e


retornar o programa para a instruo posterior ocorrncia da
interrupo.

Flags so setados independentemente do bit de habilitao


correspondente.

IMPORTANTE: Flag da interrupo no ressetado, devendo ser


feito pelo programador (caso contrrio, pode haver loop infinito).

Interrupes (cont.)

Rotina tpica de tratamento de interrupo:

Salvar contexto (j pronto no MPLAB);

Verificar tipo de evento de interrupo;

Apagar flag indicador da interrupo;

Tratar a interrupo;

Restaurar contexto (j pronto no MPLAB);

Retornar da interrupo (retfie).

Recomenda-se minimizar as chamadas de subrotinas no


tratamento de interrupes.

Interrupes (cont.)
Latncia de Interrupes: atraso de tempo existente entre a
ocorrncia de um evento e o efetivo desvio para o vetor de
interrupes.

Trs ou quatro ciclos, dependendo da instruo: 2 para o


prprio salto + 1 ou 2 para finalizar a instruo atual.

Tipos de Interrupo

Registrador INTCON (espelhado):

RBIF: Interrupo por mudana do nvel lgico nos pinos


PORTB<7:4> (RB7 a RB4).

INTF: Interrupo externa no pino RB0/INT. Pode ser ativada na


borda de subida ou descida (setando ou resetando
OPTION_REG<INTEDG>).

TMR0IF: Interrupo do timer 0 (ocorre no overflow FF 00).

Tipos de Interrupo (cont.)


Banco 0

Banco 1

TMR1IF: Int. do Timer 1. Ocorre no overflow de 65535 para 0 (16 bits).

TMR2IF: Int. do Timer 2. Ocorre aps n coincidncias entre o valor da contagem e o


valor do registrador PR2 (n pode ser 1, 2, 4, 8 ou 16).

CCP1IF: Int. do mdulo de captura/comparao/PWM 1. Duas formas: 1) quando


uma captura realizada; 2) quando uma comparao verdadeira.

SSPIF: Int. do modo serial sncrono. Sinaliza fim da transmisso/recepo.

TXIF: Int. de transmisso USART.

RCIF: Int. de recepo USART.

ADIF: Int. do conversor A/D. Sinaliza o fim de um ciclo de converso.

PSPIF: Int. de escrita/leitura na porta escrava paralela. Sinaliza operao.

Tipos de Interrupo (cont.)


Banco 0

Banco 1

CCP1IF: Int. do mdulo de captura/comparao/PWM 2.

BCLIF: Int. de coliso de barramento no modo SSP I2C Master.

EEIF: Int. de escrita na EEPROM. Sinaliza fim da escrita.

CMIF: Int. do mdulo comparador analgico. Sinaliza mudana no


estado de sada dos comparadores.

Interrupes

Exemplo de tratamento de interrupo

org 0x0004
Int:
; SALVA CONTEXTO
btfsc INTCON, INTF ; testa se ocorreu int. externa
goto
Trata_INTF
; se sim, desvia para o tratamento
Fim_Int:
; RESTAURA CONTEXTO
retfie
Trata_INTF:
bcf
INTCON, INTF
...
goto
Fim_Int

O retorno pode ser return, retlw


ou retfie (recomendada, pois a
nica que seta GIE)

Exerccio
Escreva um programa em assembly que acenda 4 leds
na barra grfica, cada um sendo acionada durante
~100ms com os demais apagados, quando da ocorrncia
de uma interrupo externa (pino RB0/INT).

Aps o acionamento o programa deve aguardar por uma


nova interruo.

Utilize uma rotina de atraso para gerar os 100ms.

Bibliografia

MPASM User's Guide, Microchip Technology Inc., 2005.

PIC16F87xA Data Sheet, Microchip Technology Inc., 2003.

M. Predko, Programming and Customizing the PIC


Microcontroller, 3rd. Ed., McGraw-Hill, 2008.

F. Pereira, Microcontroladores PIC: Tcnicas Avanadas


16F627 e 16F628, 5a. Ed., rica, 2008.

Vous aimerez peut-être aussi