ADC + TIMER0 + CCS

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

ADC + TIMER0 + CCS

Mensagempor sandrini » 18 Mar 2009 10:56

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....
sandrini
Nibble
 
Mensagens: 65
Registrado em: 12 Out 2006 10:16

Mensagempor fabim » 18 Mar 2009 11:00

o problema é o " CCS " ofcourse!!

de uma olhada como ele esta tratando, em ASM, dessa forma você pode descobrir o que esta havendo!!
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Re: ADC + TIMER0 + CCS

Mensagempor andre_luis » 18 Mar 2009 15:31

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.

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor otavio luiz » 18 Mar 2009 16:29

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.
Lembre-se, zona de Fresnel não é nenhuma franquia de puteiro.
Avatar do usuário
otavio luiz
Byte
 
Mensagens: 257
Registrado em: 11 Out 2006 13:56
Localização: Barretos - SP, terra de Peão

Mensagempor fabio_pic » 19 Mar 2009 08:13

Você pode também tentar desabilitar o timer0, fazer a leitura AD e religar o timer0.

Boa sorte.
fabio_pic
Nibble
 
Mensagens: 81
Registrado em: 03 Set 2007 09:04
Localização: Rio de Janeiro

Mensagempor sandrini » 19 Mar 2009 09:08

Muito obrigado pelas dicas... vou seguí-las e ver o que acontece...

Muito obrigado mesmo.....
sandrini
Nibble
 
Mensagens: 65
Registrado em: 12 Out 2006 10:16

resultado

Mensagempor fernandor » 21 Mar 2009 17:57

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
fernandor
Bit
 
Mensagens: 29
Registrado em: 12 Mar 2009 15:01

Mensagempor sandrini » 27 Mar 2009 16:09

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....
sandrini
Nibble
 
Mensagens: 65
Registrado em: 12 Out 2006 10:16


Voltar para PIC

Quem está online

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

x