• Aucun résultat trouvé

Christian de Boissieu

Dans le document INSTABILITE DU SYSTEME FINANCIER INTERNATIONAL (Page 141-153)

Para cada tipo particular de interrupção foi desenvolvida uma rotina, tendo em conta os requisitos de cada uma das fontes de interrupção.

As fontes de interrupção utilizadas destinam-se a: • Assinalar falhas de energia;

• Assinalar a recepção de mensagens CAN;

• Permitir a calibração do sistema SLIO CAN e acções de controlo temporizadas.

De seguida será explicada cada uma das rotinas de serviço à interrupção utilizadas pela ordem de prioridade que foi estabelecida, através de programação dos registos próprios do microcontrolador durante a iniciação, conforme descrito no Anexo 6.

6.2.2.1 R

OTINA DE SERVIÇO À INTERRUPÇÃO NÃO MASCARÁVEL

(NMI)

Para precaver situações em que haja falha de energia no sistema, foi implementado um processo que permite salvaguardar o estado das variáveis quando a falha ocorre e desta forma retomar o funcionamento, quando a anomalia for solucionada, em condições idênticas às verificadas na altura em que ocorreu a falha. Esta rotina é responsável pelo atendimento de interrupções provenientes do circuito de monitorização de tensão de alimentação explicado no capítulo 5, secção 5.1.1.3, e que tem por base o circuito integrado DS1231 [41].

A sequência de instruções executadas sempre que esta rotina é solicitada, está representada no fluxograma da Figura 6.26 e consiste nos seguintes pontos:

1. Sempre que ocorra esta interrupção é activada uma flag, que a identifica no decorrer do programa, permitindo que sejam realizadas tarefas com ela relacionadas;

2. É guardada em memória a hora, a flag anteriormente referida e o ponteiro de dados para que, após a reposição da alimentação, o sistema inicie com os dados que possuía antes da interrupção ter sido detectada;

3. O microcontrolador passa ao modo livre, IDLE, do qual sai quando for feito o reset do mesmo por hardware [41], conforme explicado no capítulo 5.

115

Figura 6.26 – Fluxograma para a rotina de serviço à interrupção NMI.

6.2.2.2 R

OTINA DE SERVIÇO À INTERRUPÇÃO

CAN

Esta rotina é responsável pelo atendimento a interrupções provenientes do controlador CAN.

Assim como a anterior, esta interrupção é de extrema importância uma vez que é ela que assinala a existência de novas mensagens CAN destinadas ao nó onde é gerada. A sequência de operações que esta rotina executa é representada no fluxograma da Figura 6.27 e é a seguinte:

1. Sempre que ocorre uma interrupção destas, são inibidos os outros tipos de interrupção e é verificado o conteúdo do registo interno de interrupções, para que assim seja possível actuar sobre a linha de interrupção.

2. É verificado se a interrupção é devida a uma recepção de dados e se o bloco de dados em questão é o primeiro.

Se o bloco de dados for o primeiro, activa-se uma flag que identifica a ocorrência de uma interrupção CAN, e o registo do buffer de recepção é consultado para se verificar quantos bytes compõem a mensagem. Posteriormente, é transferida esta informação do buffer de recepção para um buffer de dados previamente reservado na memória do microcontrolador. Por fim, o buffer de recepção é libertado para que possa ser utilizado na recepção da próxima mensagem.

• Se o bloco de dados não for o primeiro, isto é, se for uma mensagem segmentada, é consultado o registo do buffer de recepção para se

Início

Flag_INT0 Å 1

Guardar Flag_INT0 Guardar Ponteiro de Dados

Guardar Hora

116

verificar quantos bytes da mensagem ainda faltam receber. Posteriormente é transferida esta informação do buffer de recepção para um buffer de dados previamente reservado na memória do microcontrolador, decrementando uma variável global que indica o número de blocos ainda por receber.

3. São habilitados os outros tipos de interrupção.

Figura 6.27 – Fluxograma da rotina de serviço a uma interrupção CAN.

6.2.2.3 R

OTINA DE SERVIÇO À INTERRUPÇÃO DO RELÓGIO DE TEMPO

REAL

(RTC)

Esta rotina é de extrema importância uma vez que é recorrendo a ela que se implementa o processo de calibração dos nós SLIO CAN pelos quais o nó Host é responsável. Assim, esta rotina é chamada a ser executada em intervalos fixos de tempo (62,5 ms) que são assinalados por interrupções geradas pelo RTC DS1287, os quais são programados durante a iniciação do microcontrolador de acordo com os requisitos de

Início

Desabilitar todas as fontes de interrupção Ler registo de interrupções para identificar a interrupção

Flag_CAN Å 1

Transferir dados do buffer de recepção para o buffer CAN na memória do microcontrolador;

Libertar o buffer de recepção CAN; Habilitar todas as fontes de interrupção.

Sim FIM Mensagem nova ? Não Verificar o estado do buffer de recepção

117

calibração dos nós SLIO CAN.

Esta rotina possibilita, também, o desencadear de tarefas de actuação de natureza temporal, recorrendo a contadores de interrupções conseguindo-se assim tempos de actuação múltiplos do período de interrupção gerado pelo RTC.

A sequência de instruções executadas, sempre que esta rotina é solicitada, está representada no fluxograma da Figura 6.28 e consiste nos seguintes pontos:

1. Sempre que ocorra esta interrupção são desabilitados os outros tipos de interrupção e é activada uma flag, que a identificará no decorrer do programa, permitindo que sejam realizadas tarefas com ela relacionadas; 2. É incrementado um contador de interrupções para o caso de necessidade de

actuações de natureza temporal, permitindo assim tempos múltiplos do período com que a RTC gera uma interrupção; O reset deste contador é efectuado durante o decorrer do programa principal residente no Host;

3. É enviada uma mensagem de calibração para a rede CAN por forma a manter os nós SLIO CAN activos na rede e consequentemente prontos a comunicar via barramento CAN. Este requisito foi abordado anteriormente na secção 6.1.4, dedicada ao processo de calibração dos nós SLIO CAN;

4. Por fim são habilitados todos os tipos de interrupção prosseguindo o funcionamento normal do programa.

Figura 6.28 – Fluxograma para a rotina de serviço à interrupção RTC.

Início

Desabilitar interrupções

Flag_RTC Å 1

Incrementar contador de interrupções Ressincronizar os nós SLIO CAN

FIM

118

Dans le document INSTABILITE DU SYSTEME FINANCIER INTERNATIONAL (Page 141-153)