Hola.
Esty teniendo problemas para poder leer adc con el pic.
CCS 4.088 + MPLAB V8.3 + PICKIT2
les cuento, ya lo tengo conectado a un lcd en el cual estoy monitoreando los registros del ADC.
intento tomar adc por la pata RB0. que la tengo conectada a un pote entre 3.2v y masa. osea entre VDD y VSS.
antes que nada estos son los registros que luego de setear veo como quedaron.
#word AD1PCFGL =0x032c
#word AD1CON1 =0x0320
#word AD1CON2 =0x0322
#word AD1CON3 =0x0324
#word AD1CHS0 =0x0328
#word AD1CSSL =0x0330
Extracto del codigoo principal
setup_adc(ADC_CLOCK_INTERNAL|ADC_CLOCK_DIV_128);
setup_adc_ports(sAN0|VSS_VDD);
set_adc_channel(0);
print_lcd_number(AD1PCFGL , 1, 1);
print_lcd_number(AD1CON1 , 8, 1);
print_lcd_number(AD1CON2 , 15, 1);
print_lcd_number(AD1CON3 , 22, 1);
print_lcd_number(AD1CHS0 , 29, 1);
print_lcd_number(AD1CSSL , 1, 2);
do {
adc_valor = read_adc();
print_lcd_number(adc_valor, 23, 2);
delay_ms(100);
} while (TRUE);
bien, los valores que me muestra el LCD que son puestos antes de iniciair el ciclo son:
AD1PCFGL -> 0xFFFE
AD1CON1 -> 0x80E0
AD1CON2 -> 0x0000
AD1CON3 -> 0x80FF
AD1CHS0 -> 0x0000
AD1CSSL -> 0x0000
con esto estimo que tengo todos los registros bien configurados.
ahora el problema.
los valores adc que me toma son siempre 150/160 en decimal.
si coloco el pote en punto medio para obtejer 1.6 vots... y tener un esperado 512 en decimal, sige estando el 150/160.
coloco el tester en la pata en cuestion (RB0) y mido, chan 20.1 mv.
levanto la pata del pote.. y mido directamente el punto medio y tengo 1.6volts en el pote
y mido la pata (RB0) y tengo: 7.3mv.
Alguien me puede dar una mano. Por lo que vi le paso a un chico tambien con un dsPIC, el lo solucionó usando la pata RB0, en la cual yo tengo el problema.
Tambien revise el TRISB y esta correcto. es decir esta en 0x0001
¿Podra ser un problema de hard? Tengo todos los capacitores en las vdds. 3.2vts regulados. no entiendo.
Muchas gracias.