Autor Tema: Leer temperatura y humedad con dsPIC33FJ64GP204 en C  (Leído 2158 veces)

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

Desconectado Tiri

  • PIC10
  • *
  • Mensajes: 6
Leer temperatura y humedad con dsPIC33FJ64GP204 en C
« en: 18 de Mayo de 2011, 08:15:55 »
Buenas,

he conseguido leer la temperatura con el dsPIC sin muchos problemas, la configuracion que he usado es la siguiente:

AD1CON1bits.FORM = 0;      // Data Output Format: Signed Fraction (Q15 format)
AD1CON1bits.SSRC = 7;      // Sample Clock Source: GP Timer starts conversion
AD1CON1bits.ASAM = 1;      // ADC Sample Control: Sampling begins immediately after conversion
AD1CON1bits.AD12B = 0;      // 10-bit ADC operation

AD1CON2bits.ALTS = 1;      // Alternate Input Sample Mode Select Bit
AD1CON2bits.CHPS = 0;      // Converts CH0
AD1CON3bits.ADRC = 0;      // ADC Clock is derived from Systems Clock
AD1CON3bits.ADCS = 63;      // ADC Conversion Clock Tad=Tcy*(ADCS+1)= (1/40M)*64 = 1.6us (625Khz)
            // ADC Conversion Time for 10-bit Tc=12*Tab = 19.2us   

AD1CON1bits.ADDMABM = 0;                    // DMA buffers are built in scatter/gather mode
AD1CON2bits.SMPI = 1;      // SMPI Must be programmed to 1 for this case
AD1CON4bits.DMABL = 4;      // Each buffer contains 16 words

AD1CHS0bits.CH0SA = 0;      // MUXA +ve input selection (AIN4) for CH0
AD1CHS0bits.CH0NA = 0;      // MUXA -ve input selection (Vref-) for CH0

//AD1CHS0bits.CH0SB=1;      // MUXB +ve input selection (AIN5) for CH0
//AD1CHS0bits.CH0NB=0;      // MUXB -ve input selection (Vref-) for CH0

AD1PCFGLbits.PCFG0 = 0;      // AN0 as Analog Input
AD1PCFGLbits.PCFG1 = 0;      // AN1 as Analog Input      
AD1CON1bits.ADON = 1;      // Turn on the A/D converter   

La configuracion la he sacado de un proyecto prestado de un compañero, el qual leia temperatura y luminosidad.

Con esta configuracion leo la temperatura (la he puesto al AN0) simplemente con un "temp = ADC1BUF0", donde luego tracto temp y obtengo la temperatura.

Ahora el problema viene cuando descomento AD1CHS0bits.CH0SB=1; y AD1CHS0bits.CH0NB=0; y no tengo ni idea de como seguir.

He leido el daasheet correspondiente y tambien el tema mas particular del ADC que dan en microchip pero no entiendo casi nada.

No se como hacer para leer la humedad, ni si esta es la mejor configuracion para leer las dos señales, ni si la informacion viene en dos buffers o en uno solo, solo se que estoy bien perdido

Espero que alguien pueda arrojar algo de luz de cual es la mejor configuracion del ADC en mi caso y como leer los datos en tal caso.

Gracias.