Autor Tema: Como configurar múltiples entradas analógicas 30Fxxxx?  (Leído 3443 veces)

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

Desconectado javierexe22

  • PIC10
  • *
  • Mensajes: 20
Como configurar múltiples entradas analógicas 30Fxxxx?
« en: 03 de Septiembre de 2010, 16:09:21 »
Hola me encuentro realizando la configuracion del modulo ADC de 12 bits del Dspic 30f4013 con C30 y tengo problemas para observar lo medido en 2 entradas, solo me muestra el valor de An0, seguramente estoy cometiendo algun error de novato dado que recien me inicio, agradezco su ayuda y sugerencias!
El modulo lo configure de esta manera:
Código: [Seleccionar]
// config ADCON1
   _ADON=0;           // A/D apagado  (bit15)
   _ADSIDL=1;         // detención del módulo en modo IDLE (bit13)
   _FORM=0; // Formato Entero (bit 8-9)
   _SSRC=7; // conversión automática después del muestreo (bit 5-6-7)
   // ADCON1bits.SIMSAM=0;         // muestrea múliples canales individualmente en forma secuencial (bit 3)
   ADCON1bits.ASAM=1;           // la captura se inicia despues q finaliza la ultima conversion (bit 2)
   _SAMP=0;           // los amplificadores de muestreo y retención no toman muestras (bit 1)
   _DONE=0;           // bit de estado de conversión finalizada (bit 0)

//    config ADCON2
   _VCFG=0; // Vref+ =AVdd; Vref- =AVss (bit 13-14-15)
   _CSCNA=1;          // entradas exploradas (bit10)
    //ADCON2bits.CHPS=0; // convierte el canal CH0 (bit 8-9)
   _BUFS=0;           // no tiene importancia, el dato es de 16 bits (bit 7)
   _SMPI=2; // genera interrupción con la 2da secuencia de muestreo y conversión (bit 2-3-4-5)
   _BUFM=0;           // buffer configurado como palabra de 16 bits (bit 1)
   _ALTS=1;           //  usa el MUXA y MUXB(bit 0)
  
 //   config ADCON3
   _SAMC=31; // Tiempo de muestreo automático =31*TAD (bit 8-9-10-11-12)
   _ADRC=0;           // señal de reloj obtenida del reloj del sistema (bit 7)
   _ADCS=63; // reloj de conversión = 32*Tcy (bit 0-1-2-3-4-5-6)
   // config ADCHS
   ADCHS=0;           // seleciona canal 0, entrada positiva AN0 y entrada negativa Vref-
   // config ADCSSL
   ADCSSL=0XFF;// 0b0000000000000101;          //  seleciona canal explorado
  
   ADCON1bits.ADON = 1;  // prende el módulo AD
   IFS0bits.ADIF=0; //flag interrupcion limpiado

En el programa principal muestro los datos por LCD, :
Código: [Seleccionar]
IEC0bits.ADIE=1; // Habilita interrupcion

v1=(float)tension1*0.0012207;
//
v2=(float)tension2*0.0012207;
printf("V1:%1.2f V", v1); // Tension1
printf("V2:%1.2f v ", v2);    // Tension2
En la interrupcion realizo lo siguiente:
Código: [Seleccionar]
void __attribute__((__interrupt__,auto_psv)) _ADCInterrupt(void)

{
IEC0bits.ADIE=0; // Deshabilita interrupcion
tension1=ReadADC12(0);
tension2=ReadADC12(2);
IFS0bits.ADIF=0;
}
« Última modificación: 03 de Septiembre de 2010, 16:12:56 por javierexe22 »

Desconectado javierexe22

  • PIC10
  • *
  • Mensajes: 20
Re: Como configurar múltiples entradas analógicas 30Fxxxx?
« Respuesta #1 en: 06 de Septiembre de 2010, 13:49:44 »
Respondo yo mismo, ya logre que funcione...mi error estaba en que declaraba que se realice una interrupcion en la segunda secuencia, pero sin embargo puse:

- _SMPI=2; cuando debia ser igual a 1
- Coloque _ALTS=0; de manera que solo usara el MUXA
- Y tambien CSCNA=1 que multiplexa las entradas segun ADCSSL

Ahora viene otro problema cuando cambio el canal que deseo explorar se vuelve a podrir el asunto, porque puede ser?
Esta es la declaracion que hago:
Código: [Seleccionar]
TRISBbits.TRISB1=1;
TRISBbits.TRISB11=1;
ADCSSL=0b000100000000001;          //  seleciona canal explorado
ADPCFG=0b111011111111110 ;// AN11, AN0 son analogicos / el resto digitales ( )

El canal AN12 marca 1,7V cuando deberia marcar 5, y el canal AN1 marca 0 (cero) en todo momento

« Última modificación: 06 de Septiembre de 2010, 15:07:11 por javierexe22 »

Desconectado javierexe22

  • PIC10
  • *
  • Mensajes: 20
Re: Como configurar múltiples entradas analógicas 30Fxxxx?
« Respuesta #2 en: 07 de Septiembre de 2010, 02:01:46 »
 :-/ Solucionado! Una desatención me costo una bronca.... Saludos a todos!

Desconectado modkva

  • PIC10
  • *
  • Mensajes: 1
Re: Como configurar múltiples entradas analógicas 30Fxxxx?
« Respuesta #3 en: 04 de Noviembre de 2010, 13:38:30 »
 Profe, una preguntita. A tratado por casualidad usar MUXA & MUXB? Tengo 6 señales que leer simultaneamente. Estoy tratando de encontrar como hacerlo bien. La transicion hacia el MUXB no sale bien, los valores que recibo son negativos y el maximo de la variable (no 1023 pero -23547) y no encuentro un buen topic que me ayuda.

Me podrias decir si sabes de algo??

Gracias