Problema com desabilitação de interrupção

Software e Hardware para uC da Qualcomm, NXP, FreeScale e Motorola

Moderadores: 51, guest2003

Problema com desabilitação de interrupção

Mensagempor leoabubauru » 19 Jun 2007 23:35

Gente amiga, boa noite.
Há meses atrás tentei usar uma subrotina do QT2 e desligá-la dentro dela mesma. Então, na int de TIMOverflow eu habilito a INPUT CAPTURE, faço a medida da forma de onda e, no segundo pulso desligo a int INPUT CAPTURE. Fazendo isso obtive um valor errado na leitura. Desligando fora da própria subrotina o soft funciona normalmente (na rotina main, por exemplo). Entrei em contato com o support freescale, falei por um tempo com um atendente do México que, inicialmente, me disse tratar-se possívelmente de falha na familia de componentes ou falta de informação no data sheet (acho estranho esse último).

Bem, tenho todo o processo, bem como o soft. Posso encaminhar para o e-mail pessoal de quem puder me ajudar para não sobrecarregar o fórum...

Alguém já passou por algo parecido?


EDITADO

Agora sim, tudo aqui...

Os fontes que rodam são o "MAIN.C" e "MAIN2.C". Os que não rodam são os outros 2. Neles há todo o algoritmo de funcionamento e comentários suficientes (creio eu). Se houver dúvidas é só perguntar. Tem até uma figura com a forma de onda que o algoritmo lê e um documento com a seqüência de mensagens trocadas com o suporte da Freescale. Segundo ele, isso acontece com a família toda dos QT QY.


http://rapidshare.com/files/38519163/Sources.zip


Obrigado
Editado pela última vez por leoabubauru em 21 Jun 2007 14:29, em um total de 3 vezes.
Tento, tento e tento...
Me arrebento!
Também bato!
Ô negocim bunitim essa tal eletrônica de barco!
leoabubauru
Byte
 
Mensagens: 227
Registrado em: 21 Nov 2006 19:08
Localização: São Paulo

Mensagempor Fábio Pereira » 20 Jun 2007 00:17

Olá Leo,

Coloque no fórum que mais gente vai poder ajudar.

T+
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 leoabubauru » 23 Jun 2007 09:34

Se houver qualquer problema com o link é só me avisar...
Tento, tento e tento...
Me arrebento!
Também bato!
Ô negocim bunitim essa tal eletrônica de barco!
leoabubauru
Byte
 
Mensagens: 227
Registrado em: 21 Nov 2006 19:08
Localização: São Paulo

Mensagempor Fábio Pereira » 23 Jun 2007 12:00

Olá,

Eu dei uma rápida olhada no seu código.

Um dos problemas que vejo é que você apenas desabilita a interrupção do canal 0 e depois habilita-a novamente.

Bem, isso funciona, mas se já houver uma interrupção pendente quando você reabilita CH0IE, ocorrerá uma interrupção indesejada que poderá resultar em uma medida inexata mesmo.

A solução seria você desabilitar não apenas a interrupção, mas todo o canal, ou ainda reabilitar a interrupção mas também apagar o flag CH0F (através de uma única operação de escrita no TSC0).

Espero que ajude,

T+
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 leoabubauru » 23 Jun 2007 20:38

Obrigado pelo apoio, Fábio. Entendi o perigo... Segundona vou fazer uns testes seguindo essa orientação. Colocarei um TSC0_CH0F = OFF; antes da linha TSC0_CH0IE = ON; na interrupção do TIM Overflow. Assim garanto que não haverá interrupção errada... Outra coisa: Posso apagar TSC0_CH0F = OFF sem fazer uma leitura de TSC0?

Valeu! Postarei os resultados assim que os tiver em mãos...
Tento, tento e tento...
Me arrebento!
Também bato!
Ô negocim bunitim essa tal eletrônica de barco!
leoabubauru
Byte
 
Mensagens: 227
Registrado em: 21 Nov 2006 19:08
Localização: São Paulo

Mensagempor leoabubauru » 25 Jun 2007 11:50

Testes feitos -> problema resolvido!!!

Realmente o problema era pendência de CAPTURE. Desliguei somente o flag antes de habilitar a INT de CAPTURE (na INT do TIMOverflow) e o soft furunfou legal.

Engraçado que o pessoal do suporte da FS não reparou nisso no meu soft e me orientou a fazer uma série de coisas como pode ser visto no arquivo que está aí em cima pra download....



Valeu Fábio!
Tento, tento e tento...
Me arrebento!
Também bato!
Ô negocim bunitim essa tal eletrônica de barco!
leoabubauru
Byte
 
Mensagens: 227
Registrado em: 21 Nov 2006 19:08
Localização: São Paulo

Mensagempor Fábio Pereira » 25 Jun 2007 13:58

Então vou pedir emprego para a FS ... ;-)

T+
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


Voltar para NXP (ex-FreeScale (ex-Motorola))

Quem está online

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

x