TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: jfmateos2 en 07 de Marzo de 2013, 07:21:47
-
Tengo el siguiente código en un 18f27j53 y se me queda atrapado en el busyadc... no entiendo bien qué es el config3... no sé si será ese el problema u otro ¿alguien puede orientarme un poco?
NO2_SENSOR_TRIS = 1;
CloseADC();
voltage = 0;
config1 = ADC_FOSC_64 | ADC_RIGHT_JUST | ADC_2_TAD ;
config2 = ADC_CH0 | ADC_INT_OFF | ADC_REF_VREFPLUS_VREFMINUS ;
config3 = ADC_TRIG_RTCC;
portconfig = ADC_0ANA ;
#define USE_OR_MASKS
OpenADC(config1,config2,config3,portconfig);
ConvertADC();
while(BusyADC());
voltage = (ReadADC()*2.04)/1024; // convert ADC count into voltage
CloseADC();
-
Hola, no se si esto te puede ayudar
en OpenADC tienes (config1,config2,"configu3",portconfig) a lo mejor solo es un fallo tipográfico.
Saludos
-
Gracias solapower... ¡menuda vista! No es ese el problema (la errata la he metido al copiar el código en el post).
En cualquier caso ya lo tengo resuelto; parece que el problema era la forma de indicar los config con | en lugar de &.
El código que sí funciona es:
NO2_SENSOR_TRIS = 1;
voltage = 0;
OpenADC(ADC_FOSC_64 & ADC_RIGHT_JUST & ADC_2_TAD,
ADC_CH1 & ADC_INT_OFF & ADC_REF_VREFPLUS_VREFMINUS,
ADC_TRIG_CCP2,
0b11111101);
SetChanADC(ADC_CH1);
for(i=0;i<16;i++){
ConvertADC(); // Start conversion
while( BusyADC() ); // Wait for ADC conversion
voltage += (unsigned int) ReadADC();
}
voltage = (voltage/16*2.04)/1024; // convert ADC count into voltage
sprintf(USB_Buffer,(const far rom char*) "%d.%03u\n\r", (int)voltage , ((int) (((voltage)-(int)voltage) * 1000)) );
putUSBUSART(USB_Buffer,8);