Interrupções

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Interrupções

Mensagempor alessandro » 26 Fev 2007 08:25

Há algum tempo venho observando um problema relacionado a interrupção. É um problema que me incomoda quando aparece, talvez alguém aqui ja teve a mesma experiência e pode me explicar se isto esta certo:

Configuro um interrupção de 16bits
Seleciono a interrupução para iniciar em 65534 e com T1_internal, ou seja não vai gastar muito tempo para ficar ciclando.

Mas o interessante é que quando faço isso, as linhas de comando continadas no while(true) não são executadas, "o display não escreve" a "serial não recebe dados".

Por que acontece isso? Não sobra tempo para as linhas de comando abaixo do while?

Já tive esse problema com CCS e agora estou com o mesmo problema com o C18.



Alessandro
Alessandro
Avatar do usuário
alessandro
Byte
 
Mensagens: 278
Registrado em: 12 Out 2006 19:32

Mensagempor Fábio Pereira » 26 Fev 2007 08:59

Olá Alessandro,

O comportamento que você está descrevendo é absolutamente normal. O seu timer está gerando uma interrupção a cada duas contagens. Com isso, a CPU não terá tempo de executar o programa principal porque quando ela termina de processar uma interrupção, outra já está pendente.

De fato, você provavelmente esteja perdendo diversas interrupções durante o processamento de cada interrupção.

Qual a razão para você querer que o timer gere interrupções com intervalo tão pequeno ?

Até +
Fábio Pereira
embeddedsystems.io
Avatar do usuário
Fábio Pereira
Word
 
Mensagens: 674
Registrado em: 16 Out 2006 09:07
Localização: Kitchener, ON

Mensagempor alessandro » 26 Fev 2007 09:38

Olá Fabio,

Tenho um aplicação na qual efetuo o controle de dois canais de trigger e em um determinado tempo de cada trigger, efetuo a leitura do canal do AD. Como o sinal não é tão estável "biológico" preciso coletar uma quantidade considerável de leituras para efetuar uma média. Após isso é enviado para o computador para ser tratado via LabView. Realizando os testes com a quantidade de leituras + contas realizadas na rotina, o sistema esta levando 4 segundos para se atualizar.

Deixei as leituras do AD e os trigger na interrupção e fora dela a matemática e envio de dados via serial.

Na tentativa de deixar mais rápida a rotina, diminui o contador de timer_1, e ai deu no que deu. As leituras são feitas mas não são enviadas mais para o computador.

Talvez seja um aviso para que passe para um uC mais potente, mas ficamos tentando melhorar o que ja esta funcionando...

Então, se as interrupções forem em cascata, não sobra tempo mais para nada pelo que entendi.

O que acha melhor? Trocar realmente de uC, uso um 16F88 20MHz.

Grato,



Alessandro
Alessandro
Avatar do usuário
alessandro
Byte
 
Mensagens: 278
Registrado em: 12 Out 2006 19:32


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x