Autor Tema: C18: Problema con config3 en openadc (special event triggers)  (Leído 1138 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
C18: Problema con config3 en openadc (special event triggers)
« 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?

Código: [Seleccionar]
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();  
« Última modificación: 07 de Marzo de 2013, 08:11:24 por jfmateos2, Razón: errata en codigo »

Desconectado solapower

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 209
Re: C18: Problema con config3 en openadc (special event triggers)
« Respuesta #1 en: 07 de Marzo de 2013, 08:10:16 »
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

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: C18: Problema con config3 en openadc (special event triggers)
« Respuesta #2 en: 07 de Marzo de 2013, 08:15:32 »
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:

Código: [Seleccionar]
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);


 

anything