Página 1 de 1

Como usar a tensão de referência externa no CAD do 16f877A?

MensagemEnviado: 29 Mai 2007 14:07
por hemasc
Coloquei 2V no pino AN3 e terra no AN2. Já tentei de várias maneiras, mas não consigo utilizar a tensão de referência externa. O PIC continua com a referência interna de 5V.

void main()
{ set_tris_a(0x1101); //aqui já tentei (0x1)
set_tris_b(0x0);
set_tris_c(0x0);
set_tris_d(0x0);
set_tris_e(0x0);

setup_adc_ports(AN0_VREF_VREF);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);

enable_interrupts(GLOBAL);
enable_interrupts(int_ad);

d: value = Read_ADC();
delay_us(40);
............
........
}

Também já tentei

#define AN0_VREF_VREF

ou

#define RA0_ANALOG_RA3_RA2_REF

Mas nada funcionou...

Re: Como usar a tensão de referência externa no CAD do 16f87

MensagemEnviado: 29 Mai 2007 14:16
por andre_luis
Essa mesma rotina, funciona apenas mudando a referencia para interno ?

+++

Re: Como usar a tensão de referência externa no CAD do 16f

MensagemEnviado: 29 Mai 2007 14:21
por hemasc
sim! funciona como se eu não tivesse mudado a tensão de referência

Re: Como usar a tensão de referência externa no CAD do 16f

MensagemEnviado: 29 Mai 2007 14:32
por andre_luis
Voce está usando o canal 0 como entrada, mas o está usando como referencia também, ou estou enganado ? Nao seria ANALOG_RA3_REF ?

+++

Re: Como usar a tensão de referência externa no CAD do 16f

MensagemEnviado: 29 Mai 2007 15:28
por hemasc
Bom, pelo que li

setup_adc_ports(AN0_VREF_VREF); //canal A0 como leitura analógica e canal A2 e A3 como ref.

mas o engraçado é que se eu setar no tris apenas set_tris_a(0x1) não funciona, pois sai um valor fixo do AD, mesmo variando o sinal da entrada analógica do mesmo AD

MensagemEnviado: 29 Mai 2007 15:28
por renatokodaira
1.o) O Vref+ precisa ser de no mínimo Vdd - 2,5V, se voce usa 5V de alimentação, o minimo é 2,5V.

2.o) O bits PCFG3 a PCFG0 do ADCON1 precisam ser: 1000 (se o compilador C nao tiver esta função precisa ajustar os bits do ADCON1).