Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouPEDRO BACHETI Alterado mais de 7 anos atrás
1
SISTEMAS EMBARCADOS I UNIDADE 6 – SISTEMAS DE INTERRUPÇÃO TURMA: 7º Período DISCIPLINA: Sistemas Embarcados I PROFESSOR: Pedro Pacheco Bacheti pedro.exercicios@gmail.com www.sites.google.com/site/professorengpedro Serra (ES), Novembro de 2014.
2
INTRODUÇÃO ________________________________________________________________________________ Uma interrupção consiste em um evento externo ao programa que provoca um desvio no seu fluxo, de forma que a CPU passa executar um subprograma em resposta ao evento. Ao término da execução desse subprograma (chamado de ISR (Interrupt Servicing Routine) ou RTI (Rotina de Tratamento de Interrupção)), o fluxo do programa retorna ao ponto em que se encontrava antes da interrupção. As interrupções são úteis quando necessitamos que a CPU responda rapidamente a um evento,mas sem a perda de capacidade de executar outras operações enquanto ele não ocorra. SISTEMAS EMBARCADOS I – SISTEMA DE INTERRUPÇÃO
3
INTRODUÇÃO ________________________________________________________________________________ O tempo decorrido entre o início do evento e o início da execução da RTI é chamado de latência de interrupção e quanto menor, mais rapidamente a CPU responde ao evento. No caso da família MSP430, a latência de interrupção é fixa e determinada. São necessários 06 ciclos de clock para que a CPU reconheça a interrupção e efetue todo o procedimento de desvio do fluxo do programa. SISTEMAS EMBARCADOS I – SISTEMA DE INTERRUPÇÃO
4
INTRODUÇÃO ________________________________________________________________________________ Como resposta a um evento de interrupção, a CPU executa os seguintes procedimentos: A instrução em execução é completada O conteúdo do contador de programa (PC) é salvo na pilha, de forma que o programa possa posteriormente retornar ao ponto em que se encontrava. O conteúdo do registrador SR é salvo na pilha, de forma a preservar os bits de modo de operação e flags matemáticos da CPU. Caso existam múltiplas interrupções simultâneas, aquela com mais alta prioridade é tratada primeiro e assim sucessivamente. SISTEMAS EMBARCADOS I – SISTEMA DE INTERRUPÇÃO
5
INTRODUÇÃO ________________________________________________________________________________ O flag da interrupção é apagado automaticamente pela CPU. Em alguns tipos de interrupção, em que um flag é ativado por mais de um tipo de interrupção, o flag deve ser apagado pelo software do usuário. O conteúdo do registrador SR é apagado, com exceção do bit SCG0. Isso faz com que o chip saia de um eventual modo de baixo consumo em que se encontra. Outro feito de apagamento do SR é que o bit GIE é também apagado, impedido que novas interrupções não mascaráveis ocorram durante o tratamento atual. O vetor correspondente à interrupção acionada é carregado no PC, o que provoca o desvio do fluxo do programa para a RTI correspondente. SISTEMAS EMBARCADOS I – SISTEMA DE INTERRUPÇÃO
6
INTRODUÇÃO ________________________________________________________________________________ REGISTRADORES DA CPU SISTEMAS EMBARCADOS I – SISTEMA DE INTERRUPÇÃO Fone: pg.9
7
CATEGORIAS DE INTERRUPÇÃO ________________________________________________________________________________ Existem 02 categorias básicas de interrupção na família MSP430: -Não mascaráveis -Mascaráveis * A única diferença entre elas é que as não mascaráveis não podem ser desativadas pelo controle geral de interrupções (o bit GIE do SR), enquanto as mascaráveis dependem de que o bit GIE esteja ativado “1” para que possam ser reconhecidas pelo controlador de interrupções da CPU. SISTEMAS EMBARCADOS I – SISTEMA DE INTERRUPÇÃO
8
CATEGORIAS DE INTERRUPÇÃO ________________________________________________________________________________ Além das 02 categorias anteriores, ainda existe uma terceira: o reset Na família MSP430 o reset é trarado como uma categoria especial de interrupção não mascarável, possuindo prioridade máxima e um vetor próprio (0xFFFE) SISTEMAS EMBARCADOS I – SISTEMA DE INTERRUPÇÃO
9
CATEGORIAS DE INTERRUPÇÃO ________________________________________________________________________________ Existem 03 eventos capazes de gerar uma interrupção não mascarável: Uma transição de nível no pino RST/NMI quando ele está configurado no modo NMI. Uma falha no oscilador: caso os osciladores (LFXT1 ou XT2) deixe de funcionar, flag OFIFG é ativado, sinalizando a falha no oscilador. Caso a interrupção esteja habilitada, o programa será desviado para o endereço apontado pelo respectivo vetor. Uma violação de acesso à memória FLASH. * Observe que cada interrupção descrita pode ser individualmente habilitada/desabilitada pelo software do usuário. SISTEMAS EMBARCADOS I – SISTEMA DE INTERRUPÇÃO
10
CATEGORIAS DE INTERRUPÇÃO ________________________________________________________________________________ Um detalhe de extrema importância sobre esta categoria de interrupções: após a ocorrência de uma NMI, os seus respectivos controles de habilitação de interrupção (OFIE, NMIE e ACCVIE) são automaticamente apagados pelo hardware do microcontrolador, após efetuando o desvio para a rotina de tratamento de interrupção. Caso uma ou mais interrupções deste tipo estejam sendo utilizadas na aplicação, é importante que as mesmas sejam novamente habilitadas dentro da própria RTI. O fabricante recomenda que esta operação seja feita pouco antes da execução da instrução de retorno de interrupção e que os flags sejam habilitados em uma única operação de escrita, de forma a evitar que uma interrupção NMI possa acontecer antes do término do tratamento da NMI corrente, o que acessaria em um aninhamento de interrupções, que por sua vez poderia levar a uma condição conhecida como “estouro da pilha” (overflow). SISTEMAS EMBARCADOS I – SISTEMA DE INTERRUPÇÃO
11
VETORES DE INTERRUPÇÃO ________________________________________________________________________________ A arquitetura MSP430 inclui um sistema de controle de interrupções dotado de 16 diferentes vetores, cada um deles possui um grau de prioridade, sendo o vetor 15 o de menor prioridade e o vetor 31 o de maior prioridade. Cada vetor armazena o endereço em que está localizada a sub rotina responsável pelo tratamento do evento especificado. SISTEMAS EMBARCADOS I – SISTEMA DE INTERRUPÇÃO
12
VETORES DE INTERRUPÇÃO ____________________________ SISTEMAS EMBARCADOS I
13
ORGANIZAÇÃO DA MEMÓRIA – MSP430G ________________________________________________________________________________ SISTEMAS EMBARCADOS I – SISTEMA DE INTERRUPÇÃO
14
REGISTRADORES DE CONTROLE DE INTERRUPÇÃO ________________________________________________________________________________ A arquitetura MSP430 prevê 02 tipos básicos de registradores de controle de interrupção, todos localizados na área de registradores SFR: os registradores de habilitação de interrupção (IE_x) e os registradores sinalizadores de interrupção (IFG_x). Além deles, muitos flags de interrupção encontram-se localizados nos registradores de controle de periféricos. SISTEMAS EMBARCADOS I – SISTEMA DE INTERRUPÇÃO
15
REGISTRADORES DE CONTROLE DE INTERRUPÇÃO ________________________________________________________________________________ IE1 SISTEMAS EMBARCADOS I – SISTEMA DE INTERRUPÇÃO
16
REGISTRADORES DE CONTROLE DE INTERRUPÇÃO ________________________________________________________________________________ IE2 SISTEMAS EMBARCADOS I – SISTEMA DE INTERRUPÇÃO
17
REGISTRADORES DE CONTROLE DE INTERRUPÇÃO ________________________________________________________________________________ IFG1 SISTEMAS EMBARCADOS I – SISTEMA DE INTERRUPÇÃO
18
REGISTRADORES DE CONTROLE DE INTERRUPÇÃO ________________________________________________________________________________ IFG2 SISTEMAS EMBARCADOS I – SISTEMA DE INTERRUPÇÃO
19
TRATAMENTO DE INTERRUPÇÃO ________________________________________________________________________________ Para realizarmos o tratamento de interrupções em C, utilizamos a diretiva #pragma vector = que informa ao compilador que a próxima função deve ter o seu endereço de entrada armazenado na tabela de vetores de interrupção, na posição indicada após o sinal de igual. A palavra reservada _interrupt informa ao compilador que a função definida por ela é uma função de tratamento de interrupção. Isso faz com que o compilador gere os códigos de salvamento de registradores na entrada da função e de retorno de interrupção na sua saída. SISTEMAS EMBARCADOS I – SISTEMA DE INTERRUPÇÃO
20
TRATAMENTO DE INTERRUPÇÃO _______________________________ Para habilitar interrupções em linguagem C é necessário declarar a biblioteca “intrincics.h”. - Comandos de habilitação: __bis_SR_register(GIE); __enable_interrupt(); - Comandos de desabilitação: __bic_SR_register(GIE); __disable_interrupt(); SISTEMAS EMBARCADOS I
21
REFERÊNCIAS ________________________________________________________________________________ - PEREIRA, FÁBIO. Microcontroladores Família MSP430, 1 ed. São Paulo: Érica, 2005. SISTEMAS EMBARCADOS I – SISTEMA DE INTERRUPÇÃO
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.