Aula 12 - Univasf

Propaganda
Manipulando Reset e
Interrupção
Jadsonlee da Silva Sá
[email protected]
www.univasf.edu.br/~jadsonlee.sa
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Reset e Interrupções
Há 25 diferentes fontes de interrupção mais o
reset.
Essas interrupções e o vetor de reset possuem um
vetor de programa separado no espaço da memória
de programa.
Cada vetor de programa ocupa duas posições da
memória de programa.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Interrupções
O fuse BOOTRST e o bit
IVSEL de MCUCR indicam,
respectivamente, o endereço
do vetor de reset e o de início
do vetor de interrupções
interrupções..
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Registrador de Controle MCU
Bits 1 e 0
Se IVSEL=0, os vetores de interrupção são
colocados no início da memória flash. Se IVSEL = 1, os
vetores de interrupção são movidos para o início da seção
boot loader da flash.
O endereço atual do início da seção boot flash é determinado
pelos fuses BOOTSZ. Para evitar mudanças não intencionais
da tabela do vetores de interrupções, um procedimento
especial de escrita deve ser seguido para mudar o bit IVSEL.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Registrador de Controle MCU
Passo 1: Faça IVCE = 1.
Passo 2: Dentro dos próximos 4 ciclos de clock, escreva o
valor desejado em IVSEL e faça IVCE=0 .
As interrupções são automaticamente desabilitadas durante
essa sequência. Assim que IVSEL for escrito, as interrupções
são habilitadas, caso contrário, elas ficam desabilitadas por 4
ciclos de clock. O bit I não é afetado.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Registrador de Controle MCU
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Interrupções
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Interrupções
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Vetores de Interrupção – ATmega328P
Configuração mais geral para os endereços do reset e
vetor de interrupção.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Vetores de Interrupção – ATmega328P
Quando o fuse BOOTRST não for programado, o
tamanho da seção de boot é setado para 2 Kbytes e o
bit IVSEL de MCUCR é setado antes de qualquer
interrupção ser habilitada.
A configuração de programa mais geral para os
endereços de reset e vetor de interrupção são:
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Vetores de Interrupção – ATmega328P
Quando o fuse BOOTRST for programado e o tamanho
da seção de boot for setado para 2 Kbytes, a
configuração de programa mais geral para os endereços
de reset e vetor de interrupção são:
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Vetores de Interrupção – ATmega328P
Quando o fuse BOOTRST for programado, o tamanho da
seção de boot for setado para 2 Kbytes e IVSEL de
MCUCR for setado antes de alguma interrupção ser
habilitada, a configuração de programa mais geral para
os endereços de reset e vetor de interrupção são:
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Interrupções
Todas as interrupções possuem bits separados que
devem ser setados ‘1’ juntamente com o bit I de
STATUS, que habilita a interrupção global, de modo
a habilitar a interrupção.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Interrupções
Possuem níveis de prioridade determinadas: quanto
menor o endereço, maior é a prioridade.
Reset possui a maior prioridade, em seguida, INT0
(External Interrupt Request 0), e assim por diante.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Interrupções
Quando uma interrupção ocorre, o bit I é
zerado
e
todas
as
interrupções
são
desabilitadas.
– O software do usuário pode fazer I=1 para
habilitar interrupções aninhadas. Então, todas as
interrupções habilitadas podem interromper a
rotina da interrupção atual.
O bit I é automaticamente setado quando a
instrução RETI for executada.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Interrupções
Há dois tipos de interrupção:
– Gatilhada por um evento que seta o flag de
interrupção;
– Gatilha a interrupção assim que ocorrer a
condição.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Interrupções
1º tipo: PC é carregado com o endereço do vetor
da interrupção atual, de modo a executar a rotina
de manipulação de interrupção, e o hardware zera o
flag de interrupção correspondente.
– Os flags de interrupção podem ser zerados
escrevendo ‘1’ no bit correspondente.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Interrupções
2º tipo: não necessariamente possuem flags de
interrupção. Se a condição de interrupção
desaparecer antes da interrupção ser habilitada,
ela não será gatilhada.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Interrupções
Quando o AVR sai de uma interrupção, ele sempre
retorna ao programa principal e executa uma ou
mais instruções antes de uma interrupção pendente
ser servida.
STATUS não é automaticamente armazenado
quando uma rotina de interrupção for servida, e
nem restaurado quando retorna da interrupção.
Isso deve ser feito por software.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Interrupções
Instrução CLI - As interrupções são imediatamente
desabilitadas quando CLI (desabilita interrupções)
for
executada.
Nenhuma
interrupção
será
executada após CLI, mesmo se ela ocorrer
simultaneamente com a execução de CLI.
Instrução SEI – Após a execução de SEI (habilita
interrupções), a instrução seguinte será executada
antes de qualquer interrupção pendente.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Interrupções
O tempo de resposta da interrupção para todas as
interrupções AVR habilitadas é de pelo menos
quatro ciclos de clock.
Após quatro ciclos de clock, o endereço do vetor de
programa para a atual rotina de manipulação de
interrupção será executado.
Durante os quatro ciclos de clock, PC é colocado na
pilha. O vetor é normalmente um salto para a rotina
de interrupção, e esse salto gasta três ciclos de
clock.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Interrupções
Se uma interrupção ocorrer durante uma instrução
multiciclo, essa instrução será finalizada antes da
interrupção ser servida.
Se uma interrupção ocorrer quando o uC estiver no
modo sleep, o tempo de resposta será aumentado
por quatro ciclos de clock, devido o tempo de startup time do modo sleep selecionado.
O retorno de uma rotina de interrupção dura quatro
ciclos de clock. Nesse tempo, PC (dois bytes) é
restaurado da pilha, SP é incrementado por dois, e o
bit I é setado.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Interrupções
Exemplo de código – Timer 0 no modo normal.
Universidade Federal do Vale do São Francisco - UNIVASF
Colegiado de Engenharia da Computação – CECOMP
Download