Página 1 de 1

ADC + TIMER0 + CCS

MensagemEnviado: 18 Mar 2009 10:56
por sandrini
Caros amigos,

Estou tendo um problema quando faço a leitura do AD do PIC16F877A e utilizo a interrupção do Timer0. Os valores ficam diferentes, por exemplo: quando leio sem a interrupção, o valor é de 1022 e depois quando habilito a interrupção vai para 973, outro exemplo: quando leio 614 sem interrupção, este passa para 47 com a interrupção ativada.
Alguém poderia me dizer o que pode estar acontecendo? Faço este mesmo processo no MikroC e funciona perfeitamente, mas no CCS dá esse problema.
Desde já, agradeço....

MensagemEnviado: 18 Mar 2009 11:00
por fabim
o problema é o " CCS " ofcourse!!

de uma olhada como ele esta tratando, em ASM, dessa forma você pode descobrir o que esta havendo!!

Re: ADC + TIMER0 + CCS

MensagemEnviado: 18 Mar 2009 15:31
por andre_luis
sandrini,

O fato de voce estar lendo um valor menor, pode ser um ´indício´ de que provavelmente o tempo de interrupção do timer não esteja sendo suficiente para o A/D terminar a conversão.

O CCS tem APIs prontas para isso, o que facilita muito, pois voce não tem de se preocupar em trabalhar direto com os registradores.

+++

MensagemEnviado: 18 Mar 2009 16:29
por otavio luiz
Já que voce esta abilitando a interrupção do timer0 então usa tambem a interrupção do AD. Quando ocorrer uma int voce checa se é do timmer ou é do AD.

MensagemEnviado: 19 Mar 2009 08:13
por fabio_pic
Você pode também tentar desabilitar o timer0, fazer a leitura AD e religar o timer0.

Boa sorte.

MensagemEnviado: 19 Mar 2009 09:08
por sandrini
Muito obrigado pelas dicas... vou seguí-las e ver o que acontece...

Muito obrigado mesmo.....

resultado

MensagemEnviado: 21 Mar 2009 17:57
por fernandor
nao esqueca de postar o resultado. Como vc solucionou o problema? este é um dos principais propositos do forum. A sua duvida pode ser a duvida de alguem no futuro.

Uma pergunta, porque voce esta usando timer0 para fazer a leitura do AD?

Abraço

Fernando

MensagemEnviado: 27 Mar 2009 16:09
por sandrini
Caro Fernando,

Eu vou usar o timer 0 para mostrar os valores obtidos no canal analógico 0 em 4 display de 7 segmentos....

Ainda não tive tempo de trabalhar nisso novamente, mas assim que eu tiver os resultados, eu informo aqui, ok?

Um abraço....