A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Ivan Saraiva Silva Sistemas de Tempo Real Embutidos

Apresentações semelhantes


Apresentação em tema: "Ivan Saraiva Silva Sistemas de Tempo Real Embutidos"— Transcrição da apresentação:

1 Ivan Saraiva Silva Sistemas de Tempo Real Embutidos
Interrupções Ivan Saraiva Silva Sistemas de Tempo Real Embutidos

2 O Problema Nem sempre é possível garantir que o sistema (embutido) vai reagir rapidamente a eventos externos. Exemplo Em um sistems automatizados de controle de trem elétrico O trem está desenvolvendo sua velocidade máxima quando um sensor avisa da presença de um obstáculo na linha.

3 Uma solução Interrupção
Uma interrupção deve causar a suspensão da atividade em execução para que a interrupção seja tratada Interrupção pode introduzir novos problemas Programabilidade Imprevisibilidade

4 Conceitos básicos Em sistemas embutidos baseados em micro-controladores Aplicações desenvolvidas em linguagens de alto nível são traduzidas para código assembly A maioria dos comandos da linguagem C, por exemplo, são traduzidos em uma série de instruções assembly

5 Conceitos básicos A maioria dos micro-controlador possuem pinos de interrupção (IRQ – Interrupt Request) Quando um destes pinos é ativado o micro-controlador para a seqüência de execução apontada pelo PC e salta para uma rotina de tratamento da interrupção

6 Conceitos básicos Tarefas da rotina de tratamento
Salvar contexto Tratar a interrupção Restaurar contexto Para a maioria dos microcontroladores é possível desabilitar interrupções A maioria dos microcontroladores dispões de interrupções não macaráveis (não podem ser desabilitadas)

7 Conceitos básicos Sobre interrupções e microntroladores é necessário conhecer Onde encontrar a rotina de tratamento da interrupção Se duas interrupções ocorrem ao mesmo tempo qual é trataDa primeiro O que acontece se uma interrupção ocorre quando interrupções estão desabilitadas

8 Conceitos básicos O que acontece se o programador esquece de reabilitar as interrupções depois elas foram desabilitadas? O que acontece se o programador desabilita as interrupções quando elas já estão desabilitadas? O que acontece se o programador habilita as interrupções quando elas já estão habilitadas? As interrupções estão habilitadas ou desabilitadas quando o microcontrolador é inicializado? Rotinas de interrupçào podem ser escritas em C?

9 Variáveis Compartilhadas
Um problema comum ocorre devido a necessidade de comunicação entre as tarefas do sistema e as rotinas de interrupção Normalmente esta comunicação é feita por intermédio do compartilhamento de variávies. EXEMPLO

10 Exemplo Hardware de leitura da void main (void) {
temperatura interrompe: se uma temperatura muda periodicamente void main (void) { int iTemp0, iTemp1; whilw (TRUE) { iTemp[0] = iTemperature[0]; iTemp[1] = iTemperature[1]; if (iTemp0 != iTemp1) !!! ALARME; } void interrupt vReadTemp (void) { iTemperature[0] = !! Lê temp; iTemperature[1] = !! Lê temp; }

11 E se uma interrupção acontecer aqui?
Alarme Falso void main (void) { int iTemp0, iTemp1; whilw (TRUE) { iTemp[0] = iTemperature[0]; iTemp[1] = iTemperature[1]; if (iTemp0 != iTemp1) !!! ALARME } E se uma interrupção acontecer aqui? Alarme falso

12 Uma Solução (?) Hardware de leitura da void main (void) {
temperatura interrompe: se uma temperatura muda periodicamente void main (void) { whilw (TRUE) { if (iTemperature[0] != iTemperature[1]) !!! ALARME } void interrupt vReadTemp (void) { iTemperature[0] = !! Lê temp. }

13 E se uma interrupção acontecer aqui?
Alarme Falso ... Begin: MOVE R1, (iTemperature[0] MOVE R2, (iTemperature[1] SUB R1,R2 JCOND ZERO, Begin ... Código Alarme E se uma interrupção acontecer aqui? Alarme falso

14 Quando este problema é percebido
As 5 da noite na sexta-feira Quando você não estiver prestando atenção Quando não se dispões de recursos para depuração Quando seu sistema foi acionado em Marte Durante a demonstração para o Cliente FALHA QUANDO NÃO DEVERIA

15 A SOLUÇÃO void main (void) { Hardware de leitura da
int iTemp0, iTemp1; whilw (TRUE) { disable ( ); iTemp[0] = iTemperature[0]; iTemp[1] = iTemperature[1]; enable ( ); if (iTemp0 != iTemp1) !!! ALARME; } Hardware de leitura da temperatura interrompe: se uma temperatura muda periodicamente void interrupt vReadTemp (void) { iTemperature[0] = !! Lê temp. }

16 A Solução ... Begin: DI (Instrução Disable Interruption)
MOVE R1, (iTemperature[0]) MOVE R1, (iTemperature[1]) EI (Instrução Enable Interruption) SUB R1,R2 JCOND ZERO, Begin ... Código Alarme

17 Mais Exemplo void interrupt vUpdateTime (void) {++iSeconds;
if (iSeconds >=60) {iSeconds = 0; ++iMinutes; if (iMinutes >=60) {iMinutes = 0; ++ iHours; if (iHours >=24) iHours = 0; } Obviamente podem ocorrer problemas se houver interrupção no calculo dos segundos desde meia noite long lSencoSinceMidnight (void) { return ((((iHours*60)+iMinuts)* 60)+iSeconds); }

18 Soluções ERRADO long lSencoSinceMidnight (void) { disable ( );
return ((((iHours*60)+iMinuts* 60)+iSeconds); enable ( ); } long lSencoSinceMidnight (void) { long lReturnVal disable ( ); lReturnVal = (((iHours*60)+iMinuts)*60) +iSeconds; enable ( ); return (lReturnVal); } ERRADO SE CHAMADO EM SEÇÃO CRÍTICA?

19 Soluções long lSencoSinceMidnight (void) {
long lReturnVal Bool fInterruptStateOld; fInterruptStateOld =disable ( ); lReturnVal = (((iHours*60)+iMinuts)*60) +iSeconds; if(fInterruptStateOld) enable ( ); return (lReturnVal); } Desable retorna TRUE se não desabilitado antes

20 Soluções void interrupt vUpdateTime (void) { ++lSecondsToday;
if (lSecondsToday == 60*60*24) lSecondsToday = 0L; } Solução se registradores do micro-controlador longos MOVE R1, (lSecondsToday) RETURN long lSencoSinceMidnight (void) { return (lSecondsToday); }

21 Soluções void interrupt vUpdateTime (void) { ++lSecondsToday;
if (lSecondsToday == 60*60*24) lSecondsToday = 0L; } long lSencoSinceMidnight (void) { long lReturn; lReturn = lSecondsToday; while (lReturn != lSecondsToday) return (Return); Se duas leituras são idênticas devem estar certas


Carregar ppt "Ivan Saraiva Silva Sistemas de Tempo Real Embutidos"

Apresentações semelhantes


Anúncios Google