Página 1 de 1

conversor AD no PIC18F452

MensagemEnviado: 25 Mai 2007 18:16
por jean
pessoal, estou tendo problemas em usar 3 canais AD deste uControlador (RA0, RA1 e RA3).
O q esta acontecendo é que eu configuro o ad assim:
Código: Selecionar todos
setup_adc_ports(AN0_AN1_AN3 );
setup_adc(ADC_CLOCK_DIV_64);


E eu leio na rotina principal assim:

Código: Selecionar todos
set_adc_channel(0);
delay_us(100);
AD_0=read_adc( ADC_START_AND_READ );
delay_ms(100);

set_adc_channel(1);
delay_us(100);
AD_1=read_adc( ADC_START_AND_READ );
delay_ms(100);

set_adc_channel(3);
delay_us(100);
AD_3=read_adc( ADC_START_AND_READ );
delay_ms(10);

printf("Canal AD0 = %LU\r\n",AD_0);
printf("Canal AD1 = %LU\r\n",AD_1);
printf("Canal AD3 = %LU\r\n",AD_3);


O programa só faz isso, e com o PIC18F452 ele lê somente o canal ) e os demais sempre retornam zero. Verifiquei o ADCON0 e ADCON1 no disassembly e está configurado certo.
Outra coisa estranha que aconteceu foi que ao conectar um sinal de 2,5V no canal 1 ou no 3 a tensão cai pra 0V, ja se conectar este mesmo sinal de 2,5V no canal AD 0 ele lê normalmente.
Pra tirar as dúvida, portei o mesmo código e testei no PIC16F877A, e funcina perfeitamente, lê os três canais de acordo com a lógica que estou usando.
O problema é que eu sou obrigado a usar o PIC18F452, e não da pra usar o 877..

Alguém já passou por um problema destes? tem alguma dica?
Estou usando CCS 3.242 e MPLab 7.50

MensagemEnviado: 25 Mai 2007 18:57
por Maia
Olá Jean,
Não conheço o CCS mas olhando no Google eu vi um exemplo que era assim:

setup_adc_ports (RA0_RA1_RA3_ANALOG);

Será que não tá faltando esse ANALOG? Eu uso o 452 com o Hi-Tech e nunca tive problemas com o AD dele.
Abraços,
Maia

MensagemEnviado: 25 Mai 2007 19:11
por jean
Ola Maia...
Isso não tem a ver não, ja tinha testado isso também..
mas obrigado..

MensagemEnviado: 26 Mai 2007 16:12
por jean
problema resolvido, estou com um lote de 452 que apresenta problemas nos conversores AD.
Testei o mesmo programa em um outro 452 q tinha em casa e rodou legal...
t+...