EEC2104 Microprocessadores

Documentos relacionados
Interrupções por hardware

Acetatos de apoio às aulas teóricas

Os temporizadores / contadores (T/C) do 80C51

EEC2104 Microprocessadores

EEC2104 Microprocessadores

EEC2104 Microprocessadores

EEC2104 Microprocessadores

29/03/2017. Temporização da CPU SEL-433 APLICAÇÕES DE MICROPROCESSADORES I. Ciclos de Máquina. Ciclos de Máquina

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

Laboratório de Microprocessadores e Microcontroladores

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

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

Ex.: Rotinas de tempo

MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 - RESPOSTA ESPERADA

Porta série no dscope...

Laboratório de Microprocessadores e Microcontroladores

Prof. Adilson Gonzaga

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

Interrupção

MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 UMA SOLUCAO POSSÍVEL

MICROPROCESSADORES E MICROCONTROLADORES. Prova 1 Resposta Esperada

Interrupção. Prof. Adilson Gonzaga

SEL 0415 INTROD. À ORGANIZAÇÃO DE COMPUTADORES

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

MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 Resposta Esperada

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!!!!

Contador crescente e decrescente...

programáveis por software

Interrupções do Interrupções Gabriel Kovalhuk. UTFPR DAELN - Tecnologia em Mecatrônica Industrial

MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 (Tema: Microcontrolador 8051)

Temporizadores e Contadores (Timer/Counter)

Microprocessadores e Microcontroladores. Prova Substitutiva Uma Solução

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

Laboratório de Microprocessadores e Microcontroladores

Interrupções Externas

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

2.4 Temporização da CPU

MICROPROCESSADORES E MICROCONTROLADORES PROVA 2 (Tema: Microcontrolador 8051)

Aula 10 Microcontrolador Intel 8051 Parte 2

Interrupções 8051 Porta Serial

Lista de Exercícios 2

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

Laboratório de Microprocessadores e Microcontroladores

Acetatos de apoio às aulas teóricas

MICROCONTROLADOR 8051

Lista de Exercícios 1

EXERCÍCIOS RESOLVIDOS

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

Organização de Memórias

Temporizadores e Contadores

Laboratório de Microprocessadores e Microcontroladores

1. Instruções de Desvio

Assembly Saltos e Subrotinas

Laboratório de Microprocessadores e Microcontroladores

Notas de Aula Prof. André R. Hirakawa Prof. Paulo S. Cugnasca Prof. Carlos E. Cugnasca

Laboratório de Microprocessadores e Microcontroladores

Laboratório de Microprocessadores e Microcontroladores

Família 8051 (introdução) 2011/1

Programação em Linguagem Assembly (Saltos e Subrotinas)

Lista de Exercícios 1

Prof. Adilson Gonzaga

7. PROGRAMANDO O MICROCONTROLADOR. Microcontroladores - Prof: Demantova

DIAGRAMA DE BLOCOS DE UM MICROCONTROLADOR

Laboratório de Microprocessadores e Microcontroladores

EXERCÍCIOS 2 Prof. Adilson Gonzaga

SEL 337 Aplicação de Microprocessadores II

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

Microcontroladores 8051

Programação de Microprocessadores. Programação de Microprocessadores SEL-433 APLICAÇÕES DE MICROPROCESSADORES I

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

Laboratório de Microprocessadores e Microcontroladores

Microcontrolador 8051

Microcontrolador 8051:

Prof. Adilson Gonzaga

Aula 8 Microcontrolador 8051

CAPÍTULO II FAMÍLIA MCS-51

Microcontroladores. Interface Serial e RTC. Prof. Guilherme Peron Prof. Heitor S. Lopes Prof. Ronnier Rohrich Prof. Rubão

Aula 8 Microcontrolador 8051

As 5 partes fundamentais. Linguagem de Programação Pinagem Características Elétricas Ambiente de Desenvolvimento Integrado - IDE

Interface Serial. Prof. Adilson Gonzaga

Estudar os passos que devem ser feitos (ponto de partida até o objetivo)

CONJUNTO DE INSTRUÇÕES

Nível da Arquitetura do Conjunto das Instruções

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

µcontroladores da Família 51

Acetatos de apoio às aulas teóricas

Microprocessadores 1º Ano - LECOM. Universidade do Minho Dept. De Electrónica Industrial

9/3/2009. Aula 4. Engenharia de Sistemas Embarcados. Cenário: Sistema de Controle de LEDs

Aula 4. Engenharia de Sistemas Embarcados. Prof. Abel Guilhermino Tópico: Arquitetura de um microcontrolador 8051

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

PONTIFÍCIA UNIVERSIDADE CATÓLICA DO PARANÁ ENGENHARIA DE COMPUTAÇÃO. Vinicius Zanetti Tiago Dambros Rodrigo Yoshida Takeda

Laboratório de Microprocessadores e Microcontroladores. Experimento 7:

EEL Microprocessadores

Sistemas Microprocessados. sato<at>utfpr<dot>edu<dot>br

Símbolos e abreviaturas utilizadas na descrição das instruções

MICROCONTROLADOR 8051

Escola de Engenharia Elétrica, Mecânica e de Computação Universidade Federal de Goiás. Experimento 7: Sensores e Transdutores

Ex.: Rotinas de tempo

Memória de dados interna

Transcrição:

EEC2104 Microprocessadores Edição 2005/2006 Sistemas de interrupções Interrupção... Acontecimento assíncrono, inesperado para um processador Resulta na invocação automática de uma subrotina desencadeada por hardware (event-driven subroutine call) A maioria dos processadores verifica a existência de pedidos de interrupção no fim de cada instrução (há excepções...) Alguns processadores suportam vários tipos de interrupções: Mascaráveis: podem ser ignoradas Não mascaráveis: não podem ser ignoradas Por software Não são assíncronas, logo não são inesperadas... São simples chamadas a subrotinas. Interrupções - 1

Atendimento de pedidos de interrupção Sequência de processamento: Acabar de executar a instrução corrente Guardar o PC na stack (mais nenhum registo é guardado) Invocar a subrotina de atendimento do pedido de interrupção Nota: não existe nenhuma instrução de chamada de subrotinas envolvida neste processo! Interrupções vectorizadas e não vectorizadas Vectorizadas: pedido é acompanhado por um identificador que permite ao processador saber qual a rotina a invocar (como?) Não vectorizadas: Uma única rotina Uma rotina pré-definida para cada tipo de interrupção Interrupções - 2 Atendimento de pedidos de interrupção Latência: tempo que decorre entre o aparecimento de um pedido de interrupção e o início do seu atendimento Factores que influenciam a latência Arquitectura do processador Existência de zonas do programa onde o atendimento está inibido (zonas críticas) Existência de pedidos de interrupção de maior prioridade Ser ou não vectorizada Interrupções - 3

Retorno de uma interrupção Pela instrução RETI RETI (retorno de interrupção) informa o processador que terminou o atendimento da interrupção e extrai da stack o endereço de retorno (PC) RET (retorno de subrotina) só extrai da stack o endereço de retorno (PC) Indiferente usar uma ou outra? Não! Porquê? Interrupções - 4 Nível versus transição Interrupção activa ao nível só é reconhecida se o pino estiver no nível activo quando o processador verifica a existência de pedidos pendentes Podem ocorrer múltiplos atendimentos (quando? porquê?) Podem perder-se os pedidos que deixem de estar activos antes da verificação ser efectuada Interrupção activa à transição o pedido é registado, nunca se perdendo mais indicadas quando os pedidos são muito longos ou muito curtos Interrupções - 5

Interrupções na família 51... Vcc 128 RAM CPU 128 RAM INT OSC RST TIMER 1 TIMER 0 Barramento interno 4k ROM Bus CTR I/O PORTS UART P0 P1 P2 P3 (P3.2 e P3.3) Interrupções - 6 Interrupções na família 51... 5 Fontes de interrupção (6 no 8032/52) Externas: IE0 e IE1 Internas: TF0, TF1, RI ou TI, (TF2 ou EXF2) Controlo e configuração Registos IE, IP e TCON Endereços (pré-definidos) para as rotinas de atendimento IE0: 0003h TF0: 000Bh IE1: 0013h TF1: 001Bh RI/TI: 0023h (TF2/EXF2: 002Bh) Duas classes de prioridade (alta e baixa) Interrupções - 7

Fontes de interrupção INT0 IT0 RI TI 0 1 IE0 TF0 TF1 0003h 000Bh 0023h 001Bh Pedidos de interrupção Bits do TCON IT0, IT1 IE0, IE1 TF0, TF1 Bits do SCON RI, TI Pinos INT0 = P3.2 INT1 = P3.3 INT1 0 1 IE1 0013h IT1 Bit Pino Interrupções - 8 Interrupções externas Assinaladas nos bits IE0 (INT0) e IE1 (INT1) do registo TCON Activas ao nível baixo ou à transição descendente no pino respectivo (P3.2 para INT0, P3.3 para INT1) Activação à transição descendente É necessário que o bit ITx=1 O bit IEx é limpo automaticamente quando a rotina de atendimento é invocada Activação ao nível baixo Quando o bit ITx=0 O bit IEx terá que ser limpo manualmente por software Interrupções - 9

Interrupções internas Interrupções dos TC Assinaladas nos bits TF0 e TF1 do registo TCON Pedido de interrupção quando se dá o overflow (ou rollover) nos registos de contagem do respectivo TC Bit TFx é limpo automaticamente quando é invocada a respectiva rotina de atendimento Interrupções da porta série Assinaladas pelo OU lógico entre os bits RI (recepção) e TI (transmissão) do registo SCON Rotina de atendimento é a mesma Nenhum dos bits é limpo automaticamente quando a rotina de atendimento é chamada (porquê?) Interrupções - 10 Gestão do atendimento Registos IE e IP IE permite activar individual ou globalmente o atendimento dos pedidos de interrupção IP permite definir duas classes de prioridade no atendimento dos pedidos pendentes Código executado pelo µc Pode consultar, activar ou desactivar qualquer bit de interrupção É possível provocar interrupções por software Interrupções - 11

Registo IE EA - - ES ET1 EX1 ET0 EX0 Permite activar individual/globalmente o atendimento dos pedidos de interrupção Bits (endereçáveis individualmente e activos a 1): EA: Global ES: Porta série ET1, ET0: Temporizadores/contadores EX1, EX0: Externas Interrupções - 12 Registo IP - - - PS PT1 PX1 PT0 PX0 Permite definir duas classes de prioridade no atendimento dos pedidos pendentes Bits (endereçáveis individualmente, 1=alta, 0=baixa): PS: Porta série PT1, PT0: Temporizadores/contadores PX1, PX0: Externas Dentro de cada classe: IE0>TF0>IE1>TF1>RI,TI Interrupções - 13

Registo TCON TF1 TR1 TF0 TR0 IT1 IE1 IT0 IE0 Permite controlar o funcionamento dos TC e das interrupções externas Bits (endereçáveis individualmente e activos a 1): ITx=1, pino /INTx activo à transição descendente ITx=0, pino /INTx activo ao nível baixo IEx=1 assinala a existência de um pedido no pino /INTx Interrupções - 14 Interrupções no dscope... Interrupções - 15

Exemplo: barreira óptica Problema: Contar as garrafas que atravessam uma barreira óptica Considerar: Barreira e actuadores activos a zero Ao fim de cada 5 garrafas o motor do transportador pára e é dada ordem de empacotar Variável total acumula o total de caixas empacotadas P1.6 P1.7 /INT0 (P3.2) Interrupções - 16 Exemplo: barreira óptica Possível solução: Programa principal Inicializa variáveis Configura o sistema de interrupções Controla o transportador e dá as ordens de empacotamento Rotina de atendimento da interrupção Actualiza variáveis de contagem P1.6 P1.7 /INT0 (P3.2) Interrupções - 17

Barreira óptica... dseg at 30h total: ds 1 ; Total de caixas box: ds 1 ; Garrafas já na caixa cseg at 0000h ljmp main ; Programa principal cseg at 0003h ; Atendimento de INT0 inc box ; Mais uma na caixa... reti ; Fim de interrupção Interrupções - 18 Barreira óptica... cseg at 0100h main: mov total,#0 ; Inicializa variável setb it0 ; INT0 activo à transição mov ie,#81h ; EA = EX0 = 1 newbox: mov box,#0 ; Caixa vazia... setb P1.6 ; Sobe êmbolo clr P1.7 ; Arranca transportador wait: mov a,box ; Espera que cjne box,#5,wait ; a caixa encha setb P1.7 ; Pára transportador clr p1.6 ; Baixa êmbolo inc total ; Mais uma caixa pronta... sjmp newbox end Interrupções - 19

Exemplo: botão rotativo... Problema: Controlar a sintonia de um rádio por um botão rotativo digital Considerar: Botão acoplado a um codificador incremental 360 impulsos por volta, 2 saídas desfasadas 90º Variável Freq (16 bits) varia entre 0 e 35999 e é incrementada ou decrementada dependendo do sentido de rotação do botão Funcionamento do codificador: Vcc Sentido horário Sentido anti-horário A B A B Interrupções - 20 Botão rotativo... Possível solução: Programa principal Inicializa variáveis e configura o sistema de interrupções Trata de outras coisas... Rotina de atendimento da interrupção Invocada por uma descida na saída A (ligada a INT1) Testa a saída B e actualiza a frequência de acordo com o sentido de rotação detectado. Sentido horário Sentido anti-horário A B Interrupções - 21

Botão rotativo... ; Definição de nomes simbólicos e variáveis ; -------------------------------------------------- sentido equ p1.0 clk equ p3.3 ; INT1 dseg at 30h freq: ds 2 ; Frequência ; Entradas no programa principal e na rotina ; de atendimento da interrupção INT1 ; -------------------------------------------------- cseg at 0000h ljmp main cseg at 0013h ; Atendimento de INT1 ljmp update ; Actualiza freq Interrupções - 22 Botão rotativo... ; Continuação do programa principal ; -------------------------------------------------- cseg at 0100h main: clr a ; Inicializa variável mov freq,a ; MSB = 0 mov freq+1,a ; LSB = 0 setb it1 ; INT1 activo à transição mov ie,#84h ; EA = EX1 = 1 ; Agora o programa pode ocupar-se de outras tarefas ; pois a variável freq é gerida por interrupção... sjmp $ Interrupções - 23

Botão rotativo... ; -------------------------------------------------- ; Atendimento da interrupção INT1: ; Dependendo do sentido de rotação, incrementa ; ou decrementa a variável que indica a frequência ; desde que esteja compreendida entre 100 e 29999 ; -------------------------------------------------- update: jb sentido,incr ; Sentido de rotação mov a,freq+1 ; LSB jnz simple ; Salta se LSB!=0 orl a,freq ; Se LSB = MSB = 0 não jz exitd ; faz nada dec freq ; Decrementa LSB simple: dec freq+1 ; Decrementa LSB exitd: reti Interrupções - 24 Botão rotativo... incr: mov a,freq+1 ; Verifica se já chegou ao cjne a,#9fh,ok ; valor máximo. Nesse mov a,freq ; caso não faz nada! cjne a,#8ch,ok ; Nota: 35999 = 8C9Fh reti ok: inc freq+1 ; LSB++ mov a,freq+1 jnz exiti inc freq ; Se LSB=0 então MSB++ exiti: reti ; Fim de interrupção end Interrupções - 25

Dado electrónico (segunda abordagem) Batota simples e paragem do dado por interrupção Tecla P1.1 inactiva equivale a funcionamento sem batota Tecla P1.1 activa triplica a probabilidade de saír 5 Tecla de interrupção (ligada a INT0) funciona como tecla de paragem Questões em discussão: INT0 activa ao nível ou à transição: qual o mais conveniente? Como implementar a batota? Interrupções - 26 Avaliação e aprofundamento... Perceber, conhecer: Os conceitos genéricos associados às interrupções As funcionalidades oferecidas pelo sistema de interrupções da família 51 Estudar: Livro 1, pp. 183 a 185, 189 a 193 Livro 2, pp. 275 e 276 80C51 family architecture, pp. 15 80C51 family hardware description, pp. 16 a 18 Interrupções - 27