como escrever uma ISR boa

S

sacrpio

Guest
Caro frienends,
Por favor, diga que as restrições devem ter em mente ao escrever uma rotina ISR bom.

Thankx ..

 
nerver reiniciar o cão de guarda em um ISR!Espacially não em um timer ISR !!!!!!

 
sacrpio escreveu:

Caro frienends,

Por favor, diga que as restrições devem ter em mente ao escrever uma rotina ISR bom.

 
Oi,
ISR deve ser curto e rápido possível.
Você deve evitar chamar muito tempo e subrotinas morosos em ISRs.
Você pode usar bandeira bandeiras em seu programa, cada evento tem o seu próprio que
será definido no ISR e repor na rotina principal após o processamento do evento.

 
As variáveis usadas em um ISR deve ser marcado como "volátil".

 
Não chame qualquer subrutines se você tiver limitado tamanho da pilha.

 
Oi

1 curta e rápida (mesmo)
2 Se o sistema de interrupção não é vetor de interrupção.
você terá prioridade no atendimento de interrupção
3 verificado todas config que salvar e restaurar
para a velocidade que você precisa salvar como
Cada configuração é salva enought e não substituir
dados importantes
4 armadilha interrupção para o check-in válida interromper
5 Não se esqueça de tamanho da pilha (mesmo)

 
Evite a rotina chamada ...............
Mayb tentar definir um sinalizador (variável global) e sair ....

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Legal" border="0" />
 
1.proteger as suas variáveis
2.retornar o mais rapidamente possível
3.subrotinas podem ser chamados, mas certifique-se de que preenche 1 & 2

 
Se a memória de programa são divididos, é Recomanded para guardar registo de titular no início da ISR e restaurá-lo para o retorno do ISR.

 
donot se esqueça de colocar a instrução de retorno de rotina no final

 
Mr_Programmer escreveu:

nerver reiniciar o cão de guarda em um ISR!
Espacially não em um timer ISR !!!!!!
 
seyyah escreveu:

Eu estava planejando para configurar o timer de monitoria para 0,5 segundos ou 1 segundo e eu estava planejando para a repor no timer ISR (que é 100usec).
Existe algum problema com isso?
Por favor, diga o motivo.
 
Na verdade, existem casos em que repor um cão de guarda no seu timer ISR pode ser usado.Para prolongar o tempo do temporizador Watchdog disponíveis para um maior tempo (por exemplo, alguns minutos).Mas então você tem que criar um software de vigilância e cuidado é pouco!
Na maioria das vezes quando você precisa isto, há algo errado com a arquitetura de software!

Antharax

 
Hmm você está certo.Mesmo o programa falhar o temporizador continuará a ser executado e redefinir o cão de guarda para ucontroller não será resetted que faz com que um loop infinito.

 
O que eu faço sobre a coisa temporizador é:

Eu incremento um contador no loop e verificar o seu valor dentro do timer ISR.Se o contador não incremento correcly então eu bloquear flash de atualização para o cão de guarda externa.Dessa forma, você ainda tem controle sobre o WDT mesmo cpu fica louca.

abu_zakan

 

Welcome to EDABoard.com

Sponsor

Back
Top