Hola a todos, luego de implementar el muestreador con 4 canales, quería asegurarme de que obtuviera las lecturas que ingreso sean de los voltajes ingresados. Cómo hago la conversión con el valor directo de ADC1BUFx??
El ADC es de 10 bits.
Esta es la progra para la obtención de datos:
double canal1,canal2, canal3, canal4;
int scanCounter = 0;
int sampleCounter = 0;
double x,a;
void __attribute__((interrupt, no_auto_psv)) _ADC1Interrupt(void) {
switch (scanCounter) {
case 0:
canal1= ADC1BUF0;
printf("Primer canal \n");
__delay32(10000000); //500 ms
printf("%f \n", canal1);
__delay32(10000000); //500 ms
break;
case 1:
canal2 = ADC1BUF1;
printf("Segundo canal \n");
__delay32(10000000); //500 ms
printf("%f \n", canal2);
__delay32(10000000); //500 ms
break;
case 2:
canal3 = ADC1BUF2;
printf("Tercer canal \n");
__delay32(10000000); //500 ms
printf("%f \n", canal3);
__delay32(10000000); //500 ms
break;
case 3:
canal4 = ADC1BUF3;
printf("Cuarto canal \n");
__delay32(10000000); //500 ms
printf("%f \n", canal4);
__delay32(10000000); //500 ms
break;
default:
break;
}
scanCounter++;
if (scanCounter == NUM_CHS2SCAN) {
scanCounter = 0;
sampleCounter++;
}
IFS0bits.AD1IF = 0; // Clear the ADC1 Interrupt Flag
}
Los valores que imprimen son: 5184.0000, 62912.0000, 58944.0000, 13056.0000
Y los voltajes que marcan los voltímetros son 2.90, 2.30, 2.00 y 3.5
Qué significaría ese valor si no es el nivel de escalón??
Alguien me puede dar una mano?? Les agradecería mucho.
Saludos