0% acharam este documento útil (0 voto)
6 visualizações26 páginas

EE09

O documento aborda interrupções em microcontroladores PIC, incluindo habilitação, fluxo de programa e latência. Ele também discute a programação em assembly para manipulação de interrupções e a importância de salvar e restaurar o contexto durante essas interrupções. Exemplos práticos são fornecidos para desenvolver contadores e sistemas de alarme utilizando interrupções externas.

Enviado por

Syntia Silva
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
6 visualizações26 páginas

EE09

O documento aborda interrupções em microcontroladores PIC, incluindo habilitação, fluxo de programa e latência. Ele também discute a programação em assembly para manipulação de interrupções e a importância de salvar e restaurar o contexto durante essas interrupções. Exemplos práticos são fornecidos para desenvolver contadores e sistemas de alarme utilizando interrupções externas.

Enviado por

Syntia Silva
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Eletrônica Embarcada

Atividade 09

Prof. Guillermo Alvarez Bestard, Dr.


guillermo@[Link]
Tópicos
• Interrupções nos PICs.
• Habilitação e flags .
• Fluxo do programa e latência de Interrupções.
• Salvando e restaurando o contexto nas interrupções.
• Inicialização das interrupções e sub-rotinas de atendimento.
• Programação em assembly de desvios do fluxo de programa e sub-
rotinas de atenção a interrupção por mudança de portas de entrada
digital.
• Macros.

Eletrônica Embarcada Prof. Guillermo Alvarez Bestard guillermo@[Link]


Literatura recomendada
• PICmicro Mid-Range MCU Family Reference Manual. Tópico 8
[Link]
• PEREIRA, Fábio. Microcontroladores PIC - Técnicas Avançadas. Tópico 7.4
[Minha Biblioteca] [Link]
• PIC16F882/883/884/886/887 Data Sheet, Tópicos 14.3 e 14.4
[Link]
• PIC16(L)F1826/27 18/20/28-Pin Flash MCU with nanoWatt XLP. Tópico 8
[Link]
• Nota de aplicação "Using the PortB Interrupt On Change as an External
Interrupt (AN566)”
• [Link]
p/_Software/Aplication%20Notes/[Link]

Eletrônica Embarcada Prof. Guillermo Alvarez Bestard guillermo@[Link]


Interrupções nos PICs.
• Os PICs têm diversas fontes de
interrupção.
• Essas fontes geralmente incluem
uma fonte de interrupção para
cada módulo periférico, embora
alguns módulos possam gerar
várias interrupções (como o
módulo USART que gera uma
para recepção e outra para
transmissão).

Eletrônica Embarcada Prof. Guillermo Alvarez Bestard guillermo@[Link]


• O registrador INTCON é
usado no controle das
principais interrupções.
• Nesse registrador uma dupla
de bits é usada para cada
interrupção.
• Um deles para sua
habilitação (_IE) e o outro
para registro da ocorrência
(__IF)
• O bit GIE é usado para a
habilitar ou desabilitar todas
as interrupções.
• O bit PEIE é usado para a
habilitar ou desabilitar as
interrupções dos periféricos.
Eletrônica Embarcada Prof. Guillermo Alvarez Bestard guillermo@[Link]
Habilitação Registro de
Interrupções nos PICs. ocorrência

Habilitação e flags.

Eletrônica Embarcada Prof. Guillermo Alvarez Bestard guillermo@[Link]


Se o microcontrolador tiver
interrupções nos periféricos,
outros registradores são
usados (PIE1, PIR1, PIE2,
PIR2...)

A dupla PIEx e PIRx permitem


a habilitação (PIE - Peripheral
Interrupt Enable register) e o
registro da ocorrência (PIR -
Peripheral Interrupt flag
Register) da interrupção do
periférico.

Eletrônica Embarcada Prof. Guillermo Alvarez Bestard guillermo@[Link]


PIC16F886

Eletrônica Embarcada Prof. Guillermo Alvarez Bestard guillermo@[Link]


PIC16F1827

Eletrônica Embarcada Prof. Guillermo Alvarez Bestard guillermo@[Link]


É importante ressaltar que na
ocorrência de todas as
interrupções, quando
habilitadas, o contador de
programa (CP) é endereçado
para o mesmo endereço (0x04)

Quando isso acontecer o bit GIE


é desabilitado para que durante
a atenção dessa interrupção, se
acontecer outra, o fluxo de
programa não seja desviado de
novo.
Quando usamos RETFIE para
retornar, o bit GIE é habilitado
novamente.

Eletrônica Embarcada Prof. Guillermo Alvarez Bestard guillermo@[Link]


Fluxo do programa nas interrupções

0x0000 ; Vetor de Reset


...
0x0004 ; Vetor de Interrupção Pila
0x0005 0x0021
...
0x0007 RETFIE PC=0x0021
... GIE = 1
0x0010 Loop
... PC=0x0004
0x0020 Ocorrência de uma interrupção GIE = 0
0x0021

Eletrônica Embarcada Prof. Guillermo Alvarez Bestard guillermo@[Link]


Latência de Interrupções
• A latência de interrupção é definida como o tempo desde a
ocorrência da interrupção (o bit do sinalizador de interrupção é
ativado) até o momento em que a instrução no endereço 0004h inicia
a execução.
• Para interrupções síncronas (normalmente internas, dependem do
relógio do micro), como TMR0, a latência é 3TCY.
• Para interrupções assíncronas (normalmente externas), como INT ou
PortB, a latência de interrupção será de 3 a 3,75 TCY (ciclos de
instrução).
• A latência exata depende de quando o evento de interrupção ocorre
em relação ao ciclo de instrução.
• A latência é a mesma para as instruções de um e dois ciclos.
Eletrônica Embarcada Prof. Guillermo Alvarez Bestard guillermo@[Link]
Eletrônica Embarcada Prof. Guillermo Alvarez Bestard guillermo@[Link]
Salvando e restaurando o contexto nas interrupções
No PIC16F886, durante uma interrupção, apenas o valor de retorno do
PC é salvo na pilha.
Normalmente, os
usuários podem
desejar salvar outros
registadores durante
uma interrupção, por
exemplo W e registro
de STATUS. Nesses
casos isso deve ser
implementado no
software.
O comando SWAP e MOVWF não afetam o registrador STATUS.
MOVLW, MOVF afetam o flag Z de STATUS
Eletrônica Embarcada Prof. Guillermo Alvarez Bestard guillermo@[Link]
Salvando e restaurando o contexto nas interrupções
Uma macro é um conjunto de
instruções que vai ser inserido
toda vez que seja colocado o
rótulo que o identifica
(PUSH_MACRO, POP_MACRO,
Banksel, PageSel)

A diferença das sub-rotinas,


que são alocadas apenas uma
vez no código, as macros
serão alocadas toda vez que o
rótulo é utilizado.

As macros não são chamadas


com CALL e não usam
RETURN.

Eletrônica Embarcada Prof. Guillermo Alvarez Bestard guillermo@[Link]


Salvando e restaurando o contexto nas interrupções
• No PIC16F1827 o endereço de retorno do PC é salvo
na pilha. Além disso, os seguintes registros são salvos
automaticamente nos registradores Shadow: W,
STATUS, BSR, FSR, PCLATH
• Ao sair da rotina de serviço de interrupção, esses
registros são restaurados automaticamente.
• Quaisquer modificações nesses registros durante o
ISR serão perdidas. Se forem desejadas modificações
em qualquer um desses registros, o registro Shadow
correspondente deve ser modificado e o valor será
restaurado ao sair do ISR.
• Os registros Shadow estão disponíveis no Banco 31 e
podem ser lidos e gravados. Dependendo da
aplicação do usuário, outros registros também
podem precisar ser salvos.

Eletrônica Embarcada Prof. Guillermo Alvarez Bestard guillermo@[Link]


Inicialização das interrupções e sub-rotinas de atendimento

É muito importante zerar os flags de todas as interrupções que serão


habilitadas antes de ativar o GIE. Se elas não são zeradas e alguma está
em “1”, em seguida de habilitar GIE acontecera uma interrupção.

Eletrônica Embarcada Prof. Guillermo Alvarez Bestard guillermo@[Link]


Inicialização
Sequência de verificação
das de qual interrupção
interrupções e aconteceu.
Sua extensão depende de
sub-rotinas de quais interrupções estamos
utilizando.
atendimento

Precisamos zerar o
flag antes de sair da
sub-rotina.

Eletrônica Embarcada Prof. Guillermo Alvarez Bestard guillermo@[Link]


Exemplo 1
Desenvolva um contador de pulsos utilizando a interrupção externa INT
do PIC16F886

Dica: Usar os registradores INTCON e OPTION_REG


Bib: PIC16F882/883/884/886/887 Data Sheet Tópicos 15, 22.2 e ,
[Link]
Eletrônica Embarcada Prof. Guillermo Alvarez Bestard guillermo@[Link]
Exemplo 1
Desenvolva um contador de pulsos utilizando a interrupção externa INT do
PIC16F886.
Toda vez que o pino RB0 mudar de 0 para 1 (borda de subida) deve ser
incrementado o contador.
Quando o contador chegar a 20 deve ser ligado um led e zerado o contador.
No próximo pulso de INT o led será desligado.

Eletrônica Embarcada Prof. Guillermo Alvarez Bestard guillermo@[Link]


Exemplo 2 (similar ao exemplo 2 da atividade 6)
• Um sistema de alarme de um estabelecimento comercial possui 4
sensores normalmente abertos nas portas exteriores.
• Quando uma porta abrir, se o sistema está habilitado (RB4=0), o
sensor vai fornecer um “0” ao sistema.
• Nesse momento, um sinal luminoso deve ser ativado com uma saída
digital que vai mudar para “1” e outro sinal sonoro vai gerar um som
de 1 KHz, também com uma saída digital.
• O sistema não vai ser desabilitado até RB4 mudar de ‘1’ para ‘0’ duas
vezes.

Eletrônica Embarcada Prof. Guillermo Alvarez Bestard guillermo@[Link]


Exemplo 2 (similar ao exemplo 2 da atividade 6)
Desenvolva o firmware utilizando interrupções de mudança da porta B
com um PIC16F886 que trabalha a uma frequência de 8 MHz, conforme
o esquemático a seguir:

Não vamos usar

Eletrônica Embarcada Prof. Guillermo Alvarez Bestard guillermo@[Link]


Estudo individual
Fuso de
Esferas
• Um decodificador rotacional óptico Encoder

(encoder) em quadratura de fase,


que utiliza o código Gray de 2 bits,
está conectado num eixo de um
motor que movimenta uma base Sensor de
móvel de uma máquina ferramenta, Fim de
Curso
utilizando um fuso de esferas.
• O percurso máximo da base
contempla 65535 passos.

Eletrônica Embarcada Prof. Guillermo Alvarez Bestard guillermo@[Link]


Estudo individual
• O encoder vai indicar a posição absoluta do
eixo da engrenagem utilizando um disco e
um sistema óptico, conforme a tabela.
• Os bits da posição são fornecidos no canal
A e B, conforme exibido nas gráficas para o
movimento para frente (CW) e para trás
(CCW) Disco do
sistema
óptico

Posição Binário Gray


0 00 00
1 01 01
2 10 11
[Link] 3 11 10
que-serve-como-escolher-como-interfacear/
Eletrônica Embarcada Prof. Guillermo Alvarez Bestard guillermo@[Link]
Estudo individual 1
0

• Um outro sensor óptico de fim de


curso indica quando a ferramenta
está na posição inicial (posição
zero).
• Sua saída é a coletor aberto,
ficando em saturação (‘0’) quando
chega luz no sensor.
• Quando a ferramenta chega na
posição inicial o az de luz é
interrompido por uma lâmina
móvel e o sensor muda sua saída
colocando o transistor em corte
(‘1’).

Eletrônica Embarcada Prof. Guillermo Alvarez Bestard guillermo@[Link]


Estudo individual
• Implemente um
sistema de medição
da posição
utilizando um
PIC16F887
utilizando
interrupções,
conforme o
esquemático
mostrado na figura.
• A indicação da
posição será feita
com 16 leds.

Eletrônica Embarcada Prof. Guillermo Alvarez Bestard guillermo@[Link]

Você também pode gostar