Interrupções por hardware



Documentos relacionados
UTFPR Departamento Acadêmico de Eletrônica Curso Técnico em Eletrônica Microcontroladores 1 - Prof. Cion nov/2010 (atualizado em jul 2015)

Laboratório de Microprocessadores e Microcontroladores

Laboratório de Microprocessadores e Microcontroladores

Prof. Adilson Gonzaga

Temporização Interrupções. Prof: Evandro L. L. Rodrigues. Rotinas de Atraso

Interrupção. Prof. Adilson Gonzaga

Microcontroladores. Interrupções no Prof. Guilherme Peron Prof. Heitor S. Lopes Prof. Ronnier Rohrich Prof. Rubão

Temporização da CPU SEL-433 APLICAÇÕES DE MICROPROCESSADORES I. Ciclos de Máquina. Ciclos de Máquina. Temporização Interrupções Rotinas de Atraso

EEC2104 Microprocessadores

MICROCONTROLADOR 8051

SEL 0415 INTROD. À ORGANIZAÇÃO DE COMPUTADORES

MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 (Tema: Microcontrolador 8051) Resposta Esperada

Organização de Memórias

MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 - RESPOSTA ESPERADA

MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 UMA SOLUCAO POSSÍVEL

Microcontroladores (µcs) e microprocessadores (µps) A família 80C51. 80C51: Arquitectura do núcleo de base. Os µcs da família 80C51

Porta Série SÉRIE x PARALELO PORTA SÉRIE. Comunicação série SÉRIE PARALELA

INSTITUTO SUPERIOR TÉCNICO. Arquitectura de Computadores (ACom)

Laboratório de Microprocessadores e Microcontroladores

Barramentos: interface e temporização

Interrupções Externas

MICROPROCESSADORES E MICROCONTROLADORES. Prova 1 Resposta Esperada

MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 - Uma Solução Possível

Temporizadores e Contadores

Temporizadores e Contadores (Timer/Counter)

Aula 10 Microcontrolador Intel 8051 Parte 2

Laboratório de Microprocessadores e Microcontroladores

SEMINÁRIO ASSEMBLY: Arquitetura 8051

Microcontrolador 8051

Interrupções 8051 Porta Serial

EEC2104 Microprocessadores

MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 UMA SOLUÇÃO POSSÍVEL. Obs.: Todas as questões têm valor 2,0. Boa prova e Feliz Natal e Ano Novo!!!!

Apontamentos sobre o 8051 Prof. Eng Luiz Antonio Vargas Pinto Versão revista e ampliada em 01/07/2009 Revisada em 28/02/2006 Revisada em 18/11/2007

2.4 Temporização da CPU

17/04/2017. Comunicação Serial. Comunicação Serial. Comunicação de Dados em Microprocessadores. . Comunicação Paralela. Comunicação Serial

Microprocessadores 1º Ano - LECOM

Programação em C Aplicações de Microprocessadores 2006/2007

EXERCÍCIOS RESOLVIDOS

Organização e Arquitetura de Computadores I

Nível do Conjunto de Instruções Prof. Edson Pedro Ferlin

Microcontrolador 8051:

MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 (Tema: Microcontrolador 8051)

Acetatos de apoio às aulas teóricas

MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 Resposta Esperada

Função Fundamental do SO

Sistemas Operacionais

EXPERIÊNCIA 5: IMPLEMENTAÇÃO DE UM CRONÔMETRO COM INTERRUPÇÃO

µcontroladores da Família 51

Controladores do IBM-PC. Gustavo G. Parma

MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 (Tema: Microcontrolador 8051)

SEL-614 MICROPROCESSADORES E APLICAÇÕES. Adilson Gonzaga

Lista de Exercícios 2

Microprocessadores e Microcontroladores. Professor Lucas Araujo do Nascimento

1.2 Registradores relacionados as Interrupções. 3. TOSE Sentido da transição da borda do sinal aplicado am TMR0

Organização de Computadores 1

USJT Universidade São Judas Tadeu ENGENHARIA ELÉTRICA - LAB. INTEGRADO. EXP4 : Interrupções do uc 8051

Organização e Projeto de Computadores 3: Modo de Endereçamento, Sub-Rotina, Instruções de E/S, Interrupção

Nome Endereço IRQ COM1 3F8 4 COM2 2F8 3 COM3 3E8 4 COM4 2E UART - Universal Asynchronous Receiver/Transmitter. descrição

SEL 337 Aplicação de Microprocessadores II

mov R1,10H ; Carrega o dado do endereço 10H em R1 mov R1,#10H ; Carrega 10H em R1

8051 Estudo de Caso. Prof. Carlos E. Capovilla - CECS/UFABC 1

Tópicos: 1 - Modos de endereçamento do Pilha e instruções de Pilha. 3 - Instruções que usam pilha: - instrução CALL - instrução RET

Entradas/Saídas. Programação por espera activa Programação por interrupções

PCS-2529 Introdução aos Processadores. Prof. Dr. Paulo Sérgio Cugnasca

Fundamentos de Microprocessadores ENGENHARIA ELECTROTÉCNICA

Lista de Exercícios 1

Laboratório de Microprocessadores e Microcontroladores

Microcontroladores 8051

Interrupções. As interrupções são casos especiais de chamadas de procedimentos.

Transcrição:

Interrupções Existem interrupções por software e por hardware, embora as que nos interessem mais neste contexto sejam as interrupções por hardware As interrupções por software são instruções que causam a chamada à respectiva rotina de atendimento (e.g. RST 38hH no Z8) As interrupções por software são eventos síncronos Na família 5 não existem interrupções deste tipo EEC24 Microprocessadores - FEUP / DEEC / JMF - Interrupções por hardware São despoletadas por eventos assíncronos relativamente à execução do programa (quando carregamos numa tecla que gera um pedido de interrupção, não sabemos que instrução está a ser executada) É o que sucede com as interrupções geradas por um periférico de comunicação série, quando pretende informar o CPU de que chegou um novo carácter EEC24 Microprocessadores - FEUP / DEEC / JMF - 2

Event driven applications Esta designação aplica-se nos casos em que não existe acção enquanto não ocorrer um evento que a determine São comuns nos embedded real-time systems Um sistema diz-se em tempo real quando é capaz de responder e processar um evento num intervalo de tempo pré-determinado EEC24 Microprocessadores - FEUP / DEEC / JMF - 3 Latência das interrupções Esta latência corresponde ao intervalo de tempo que decorre entre o pedido de interrupção e o início ao seu atendimento depende de vários factores: Arquitectura do CPU (e.g. quando é que o CPU vê se existem pedidos pendentes e dá início ao atendimento) Existirem ou não sequências de código que não admitem o atendimento de interrupções Existência de interrupções de prioridade superior EEC24 Microprocessadores - FEUP / DEEC / JMF - 4

Exemplo (não se refere à família 5) Nota: Este exemplo corresponde a um sistema de interrupções vectorizadas (o endereço de atendimento é fornecido pelo controlador de interrupções) EEC24 Microprocessadores - FEUP / DEEC / JMF - 5 Atendimento das interrupções A maioria dos CPU verifica se existem pedidos de interrupção pendentes quando termina a execução de cada instrução Quando as interrupções estão habilitadas, o CPU guarda o endereço da próxima instrução na stack e carrega o PC com o endereço da rotina de atendimento (ISR, interrupt service routine) Na família 5 estes endereços estão pré-definidos (serão apresentados adiante) EEC24 Microprocessadores - FEUP / DEEC / JMF - 6

Segmentos críticos Neste exemplo, a sequência de instruções a 4 não pode ser interrompida sem corrermos o risco de funcionamento incorrecto EEC24 Microprocessadores - FEUP / DEEC / JMF - 7 Prioridade das interrupções É possível atender múltiplas interrupções em simultâneo (i.e. uma interrupção pode interromper outra interrupção) O aninhamento (nesting) de interrupções requer a existência de prioridades, que podem ser: Multi-nível (prioridades fixas) Multi-nível (prioridades dinâmicas) Nível único Nota: Neste caso será possível que uma interrupção interrompa outra? E será possível atender EEC24 Microprocessadores - FEUP / DEEC / JMF - 8 umas e ignorar outras? (máscaras)

Interrupções activas ao nível Uma interrupção activa ao nível só é reconhecida se o pino estiver no nível activo quando o CPU verifica a existência de pedidos pendentes Podem perder-se os pedidos que deixem de estar activos antes da verificação ser efectuada Também podem ocorrer múltiplos atendimentos enquanto o pino continuar no nível lógico activo EEC24 Microprocessadores - FEUP / DEEC / JMF - 9 Interrupções activas à transição Nas interrupções activas à transição o pedido é registado, o que elimina os problemas anteriores As interrupções deste tipo são preferíveis quando os pedidos são muito longos ou muito curtos EEC24 Microprocessadores - FEUP / DEEC / JMF -

Interrupções não vectorizadas Quando o endereço da rotina de atendimento é comum a mais do que uma fonte de interrupção, é necessário determinar a sua origem Esta situação é frequente nas interrupções geradas pelos periféricos de comunicação série (nas interrupções por envio ou recepção) EEC24 Microprocessadores - FEUP / DEEC / JMF - As interrupções na família 5 /INT IT IE TF /INT TF IT IE Fontes de interrupção IE e IE são flags de interrupção que pertencem ao registo TCON (SFR com endereço 88H) TI RI EEC24 Microprocessadores - FEUP / DEEC / JMF - 2

Gestão das interrupções O código executado pelo microcontrolador pode activar / desactivar (set / clear) todas as flags de interrupção Cada fonte de interrupção pode ser habilitada / inibida individualmente (registo IE nos SFR) A cada fonte de interrupção pode ser atribuída uma prioridade alta ou baixa (registo IP nos SFR) EEC24 Microprocessadores - FEUP / DEEC / JMF - 3 /INT IT IE Interrupções externas/int TF IT IE TF /INT e /INT podem ser activos ao nível () ou à transição ( ), de acordo com o conteúdo do registo TCON (SFR com endereço 88H) Se as interrupções forem activas à transição, as flags que as geram são limpas pelo hardware quando a respectiva rotina é executada (caso contrário, terá que ser o código do utilizador a fazê-lo) TI RI EEC24 Microprocessadores - FEUP / DEEC / JMF - 4

/INT IT IE Interrupções dos T/C TF /INT IT IE TF As interrupções pedidas pelos temporizadores / contadores são geradas por TF e TF e activadas por rollover nos respectivos registos (excepto T/C em modo 3, como se verá mais tarde) Quando é gerada uma interrupção proveniente dos T/C, a flag que a gerou é limpa pelo hardware quando a rotina de atendimento é executada TI RI EEC24 Microprocessadores - FEUP / DEEC / JMF - 5 Interrupções da comunicação série /INT TF /INT IT IT IE IE TF Os pedidos de interrupção do periférico de comunicação série resultam do OR entre as flags RI (recepção) e TI (transmissão) Nenhuma destas flags é limpa pelo hardware quando a respectiva rotina é executada (o código da rotina tem primeiro que identificar a causa da interrupção e depois limpar a flag) TI RI EEC24 Microprocessadores - FEUP / DEEC / JMF - 6

O registo IE (end. SFR A8H) endereçável ao bit Este registo permite-nos habilitar / inibir cada fonte de interrupção: IE.7 IE.6 IE.5 IE.4 IE.3 IE.2 IE. IE. EA - - ES ET EX ET EX EA inibe todas as interrupções se estiver em ; se estiver em, estarão habilitadas as que tiverem o bit IE.x em ES: periférico série; ET e ET: T/C e ; EX e EX: externas (pinos /INT e /INT) EEC24 Microprocessadores - FEUP / DEEC / JMF - 7 O registo IP (end. SFR B8H) endereçável ao bit Este registo permite-nos atribuir a cada fonte de interrupção uma prioridade alta ou baixa: IP.7 IP.6 IP.5 IP.4 IP.3 IP.2 IP. IP. - - - PS PT PX PT PX Uma fonte de interrupção terá prioridade alta quando o bit IP.x estiver em e baixa quando estiver em PS: periférico série; PT e PT: T/C e ; PX e PX: externas (pinos /INT e /INT) EEC24 Microprocessadores - FEUP / DEEC / JMF - 8

O registo TCON (end. SFR 88H) endereçável ao bit Para além de controlar os T/C, este registo está também relacionado com as interrupções externas: TC.7 TC.6 TC.5 TC.4 TC.3 TC.2 TC. TC. TF TR TF TR IE IT IE IT IEx: O hardware activa (set) esta flag àtransição descendente em /INTx e limpa-a (clear) quando a respectiva rotina de atendimento é executada ITx: Se estiver em a interrupção em /INTx é activa à transição descendente; se não, é activa ao nível. EEC24 Microprocessadores - FEUP / DEEC / JMF - 9 Atendimento das interrupções Ao atender uma interrupção, o hardware do 8C5 determina a execução de uma instrução LCALL para a respectiva rotina de atendimento: Endereços de atendimento: IE - 3H; TF - BH; IE - 3H; TF - BH; RI ou TI - 23H LCALL força o PC na stack, mas quaisquer outros registos (e.g. ACC, PSW,...) terão que ser guardados pelo código do utilizador A flag associada à interrupção é limpa pelo hardware nuns casos, mas noutros terá que o código a fazê-lo EEC24 Microprocessadores - FEUP / DEEC / JMF - 2

Retorno das interrupções A execução da rotina de atendimento continua até que seja encontrada uma instrução RETI (return from interrupt): RETI informa o processador que terminou o atendimento à interrupção e extrai da stack o endereço de retorno RET (retorno de subrotina) faria algo semelhante, mas manter-se-ia a indicação de estar em curso o atendimento a uma interrupção (qual é o problema?) EEC24 Microprocessadores - FEUP / DEEC / JMF - 2 Exemplo (KEIL): Interrupções via /INT ; código para ilustrar o atendimento de interrupções ; externas em /INT, activas à transição cseg at salta: jmp inicio ; uma vez que 3H tem que conter o código de atendimento ; a /INT, em cabe apenas uma instrução de salto cseg at 3h intext: inc r reti ; o atendimento a /INT apenas incrementa o R, pelo que o ; seu conteúdo nos diz quantas interrupções foram atendidas cseg at h inicio: mov r,# mov tcon,# mov ie,#8h ; programa o funcionamento das interrupções via /INT ciclo: mov a,p add a,p mov p2,a jmp ciclo ; está sempre a colocar em P2 o valor de P+P end EEC24 Microprocessadores - FEUP / DEEC / JMF - 22

Int. via /INT: Visualização no dscope EEC24 Microprocessadores - FEUP / DEEC / JMF - 23 Trabalho do dado (Stop via /INT) Que alterações são necessárias para implementar o botão de Stop através de /INT? (para libertar a tecla que era usada para este efeito) Como deve ser feita a inicialização? Que tarefas deverão ser realizadas pela rotina de atendimento? EEC24 Microprocessadores - FEUP / DEEC / JMF - 24