Chip-Select e Controle de Interrupção Sistemas Embarcados.

34
Chip-Select e Controle de Interrupção Sistemas Embarcados

Transcript of Chip-Select e Controle de Interrupção Sistemas Embarcados.

Page 1: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Chip-Select e Controle de Interrupção

Sistemas Embarcados

Page 2: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Chip-select Chip-Select (unidade de seleção de chip) é um mecanismo

fundamental para permitir à CPU acessar memórias e/ou periféricos externos

O chip-select pode ser um sinal extraído de um endereço No exemplo, qualquer endereço entre 10000h e 1FFFFh,ou iniciando em 30000h50000h ou 70000h, ... (A16=1) habilita a SRAM

SRAM

Page 3: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Chip-Select Utilizando um decodificador, pode-se selecionar um entre

vários dispositivos (por exemplo, bancos de memória)

Decodificador (MUX)

Page 4: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

As interrupções podem ser mascaráveis ou não-mascaráveis As mascaráveis são controladas pela unidade de controle de

interrupção Interrupções podem surgir de periféricos do chip e de 5 pinos

de interrupção externa A unidade de controle de interrupção é responsável por

sincronizar e priorizar as interrupções, e fornecer o vetor de tipo de interrupção à CPU

Há duas formas de a CPU processar pedidos de periféricos: Sondagem (polling) e interrupção

Sondagem exige que a CPU verifique constantemente as necessidades dos dispositivos periféricos

Interrupção elimina tal necessidade, liberando a CPU para tratar de outros assuntos

Page 5: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Quando ocorre uma interrupção, a CPU para o processo principal, salva seu status e transfere a execução para a unidade periférica que a interrompeu.

Finalizada a interrupção, a CPU restaura o status, continuando a execução do processo principal exatamente no ponto em que foi interrompido.

Interrupções mascaráveis podem ser mascaradas individualmente ou globalmente

O Interrupt Enable bit do PSW é usado para habilitar ou desabilitar globalmente interrupções mascaráveis

Este controle é feito pelo programador através das instruções STI (Set Interrupt) ou CTI (Clear Interrupt)

O mascaramento individual de interrupções é feito através do registrador Interrupt Mask

Page 6: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Page 7: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Uma função crítica da unidade de controle de interrupção é priorizar os pedidos de interrupção

A prioridade das fontes de interrupção pode variar de zero (maior prioridade) a sete (menor prioridade)

As fontes podem ser programadas para compartilhar um prioridade

Page 8: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Prioridades de interrupções padrão após reset externo Timer 0 maior prioridade que Timer 1 que tem maior prioridade

que Timer 2 Recepção serial tem maior prioridade que transmissão serial

Page 9: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Ao atender uma interrupção, a CPU coloca o registrador PSW na pilha e zera o bit IE (habilita temporariamente todas as interrupções mascaráveis)

As interrupções mascaráveis são habilitadas pela instrução IRET ou explicitamente pelo programador

Habilitar instruções mascaráveis permite o aninhamento (nesting) de instruções

Regras para aninhamento de interrupções: Uma fonte de interrupção não pode antecipar uma interrupção

de maior prioridade Uma fonte de interrupção não pode antecipar a si própria

A forma mais simples de usar o controle de interrupção é não utilizando o aninhamento

O problema é que interrupções de maior prioridade passam a ter que esperar até que uma interrupção em execução termine

Page 10: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Sequência de interrupção Quando a unidade de controle de interrupção (UCI) detectada

uma interrupção, ela seta o bit correspondente no registrador de pedido de interrupção, indicando que a interrupção está pendente

Depois a UCI checa todas as fontes de interrupção pendentes, verifica se a interrupção não está mascarada e sua prioridade, assegura o pedido de interrupção e espera o reconhecimento da interrupção

Quando a UCI recebe o reconhecimento de interrupção, ela passa o tipo para a CPU, que dá início à sequência de processamento

Ao receber o reconhecimento de interrupção, a UCI limpa o bit correspondente no registrador de pedido de interrupção e set o bit correspondente no registrador In-Service

O programador é responsável por limpar o bit In-Service com a instrução EOI (End-Of-Interrupt)

Page 11: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Resolução de Prioridade - o processo de aninhamento de interrupções exige um controle mais complexo, onde tais condições devem ser satisfeitas: Seu bit correspondente na máscara de interrupção está limpo

(não está mascarado) Sua prioridade é maior do que o valor no registrador da

máscara de prioridade Seu bit In-Service está limpo Sua prioridade é igual o maior do que aquela de qualquer

interrupção cujo bit In-Service está setado

Page 12: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Exemplo de Resolução de PrioridadeAssume-se as seguintes condições iniciais: A UCI foi inicializada Nenhuma interrupção está pendente Nenhum bit In-Service está setado Todas as interrupções não estão mascaradas O esquema de prioridade padrão está sendo usado O registrador de máscara de prioridade está setado para

prioridade mais baixa (prioridade sete)

Page 13: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Page 14: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Exemplo de Resolução de PrioridadeO exemplo usa as interrupções externas INT0 e INT3 para

descrever o processo:1) Uma transição low-to-high em INT0 seta seu bit de pedido de

interrupção, de modo que a interrupção está agora pendente2) A UCI assegura o pedido de interrupção à CPU e espera por

um reconhecimento3) A CPU assegura a interrupção4) A UCI passa o tipo de interrupção para a CPU5) A UCI limpa o bit INT0 no registrador de pedido de interrupção

e seta o bit INT0 no registrador In-Service6) A CPU executa a sequência de processamento, executando o

apontador de interrupção INT0

Page 15: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Exemplo de Resolução de PrioridadeO exemplo usa as interrupções externas INT0 e INT3 para

descrever o processo:7) Durante a execução de INT0, uma transição low-to-high em

INT3 seta seu bit de pedido de interrupção8) A UCI determina que INT3 tem prioridade menor do que INT0

(em execução, pois o bit In-Service de INT0 está setado). Logo o pedido de interrupção não é enviado para a CPU, de modo que INT3 permanece pendente no registro de pedido de interrupção

9) O apontador de interrupção INT0 completa e envia um comando EOI para limpar o bit INT0 no registrador In-Service

10)INT3, ainda pendente, agora possui prioridade de execução. A UCI assegura o pedido de interrupção e o processo segue como para o apontador INT0

Page 16: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Interrupções que compartilham uma fonte simples Pedidos de interrupções múltiplas podem compartilhar uma

entrada de interrupção simples (ex.: TIMER 0, TIMER 1 e TIMER 2 compartilham uma entrada simples)

Embora compartilhem uma entrada, cada interrupção tem o seu próprio vetor de interrupção

O registrador de status de interrupção atua como um registrador de pedido de segundo nível

Ele contém um bit para cada interrupção Timer Quando uma interrupção Timer ocorre, ambos o bit do

registrador de status de interrupção individual e o bit do registrador de pedido de interrupção compartilhada são setados

Na sequência, a interrupção é processada como qualquer outra fonte de interrupção

Page 17: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Cascateando com o 8259 externo Os módulos 8259 permitem aumentar o número de pinos de

interrupção externos O modo cascade da UCI suporta o uso do 8259 Os pinos e servem como entradas

para interrupções externas fora do modo cascade No modo cascade eles servem como saídas de

reconhecimento de interrupção Após reset, eles são configurados como entradas Resistores de pullup asseguram que os pinos não flutuem. Os

valores dos resistores devem ser altos o suficiente para prevenir sobrecarga dos pinos

0/2 INTAINT 1/3 INTAINT

Page 18: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Usando o módulo 8259 externo no modo cascata

Page 19: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Mode aninhado completamente especial É uma característica opcional utilizada normalmente no modo

cascata, aplicável somente a INT0 e INT1 Nesse modo de interrupção, um pedido de interrupção é

atendido mesmo se seu bit In-Service está setado No modo cascata, um 8259 controla até oito interrupções

externas que compartilham um pino de entrada de interrupção simples

Modo aninhado completamente especial permite que a estrutura de prioridade do 8259 seja mantida. Deste modo, enquanto o apontador de interrupção está executando, o 8259 recebe uma interrupção de maior prioridade de uma de suas fontes, e é assegurado que tal interrupção seja executada

Page 20: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Sequência de reconhecimento de interrupção Durante a sequência de

reconhecimento de interrupção, a UCI passa o tipo de interrupção à CPU, que o multiplica por quatro para obter o endereço do vetor de interrupção

Os tipos de interrupções para todas as fontes são fixos e são passados pela UCI à CPU

A primeira indicação externa da sequência de reconhecimento de interrupção é a busca de CPU da tabela de vetor de interrupção

Page 21: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Registrador de controle de interrupção Cada fonte de interrupção tem seu próprio registro de controle

de interrupção, que permite definir o seu comportamento

Page 22: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Registrador de controle de interrupção INT4:2 – Registradores de interrupção para pinos externos

não cascateáveis

Page 23: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Registrador de controle de interrupção INT1:0 – Registradores de interrupção para pinos

cascateáveis

Page 24: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Registrador de pedido de interrupção

Page 25: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Registrador de máscara de interrupção

Page 26: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Registrador de máscara de prioridade

Page 27: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Registrador In-Service

Page 28: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Registrador de Sondagem

Page 29: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Registrador de Status de Sondagem

Page 30: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Registrador de EOI

Page 31: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Registrador de Status de Interrupção

Page 32: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Inicialização da UCI1) Determine qual fonte de interrupção deseja-se utilizar2) Determine se será utilizado o esquema de prioridade padrão

ou um esquema próprio3) Programe o registrador de controle de interrupção para cada

fonte de interrupçãoa) Para pinos de interrupções externas, selecione gatilho de

borda ou de nívelb) Para INT0 ou INT1, habilite o modo cascata, modo de

aninhamento completamente especial, ou ambosc) Se está usando um esquema de prioridade próprio,

programe o nível de prioridade para cada fonte

Page 33: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção

Inicialização da UCI4) Programe a máscara de prioridade com um nível de máscara

de prioridade se deseja mascarar interrupções baseadas em prioridade (o nível padrão é sete)

5) Set o bit de máscara no registrador de máscara de interrupção para quaisquer interrupções que se deseje desabilitar

Page 34: Chip-Select e Controle de Interrupção Sistemas Embarcados.

Unidade de Controle de Interrupção