Duda con el ADC del DSPIC33FJ12GP202

¿Qué tal amigos? Estoy programando el ADC del DSPIC33FJ12GP202, no me marca errores a la hora de compilar el programa, sólo que al simularlo no hay conversión.
Alguien que pueda orientarme por favor. ¿En qué estoy fallando?
No tengo mucha experiencia en estas cosas, pero estoy interesado en aprender, muchas gracias de ante mano.
Saludos!
Código:
#include <p33FJ12GP202.h>
#define fcy 16000000
   _FOSC ( FCKSM_CSDCMD & IOL1WAY_OFF & OSCIOFNC_OFF & POSCMD_XT );
int main (void);
void adc (void);


int main (void)
{
    TRISB=0X0000;
    adc();
    AD1CON1bits.ADON=1;        //SE HABILITA EL ADC
while (1)
{
    AD1CON1bits.SAMP=1;//INICIA EL MUESTREO
    delay_ms(3);
    AD1CON1bits.SAMP=0;//TERMINA EL MUESTREO
    while(!AD1CON1bits.DONE);// SE HA REALIZADO LA CONVERSIÓN?
    PORTB=ADC1BUF0;    //LOS DATOS SE GUARDAN EN EL BUFER 0 DEL ADC Y SE MANDAN AL PUERTO B                                                                 
}    
}
void adc(void)
{
    TRISA=0X0001;    //ENTRADA POR RA0
    AD1PCFGL=0;        //ENTRADAS ANALÓGICAS
    AD1CON1bits.AD12B=1;//ADC DE 12 BITS}
    AD1CON2bits.VCFG=0;
    AD1CON3=33;

    AD1CON1bits.ASAM=1;
    AD1CON1bits.SSRC=1;///TERMINA EL MUESTREO
    AD1CON1bits.FORM=0;
    IFS0bits.AD1IF=1;
    AD1CON1bits.DONE=1;

    IFS0bits.AD1IF=0;
    IPC0bits.T1IP=1;


}
 
Última edición por un moderador:
Ya probaste poner la subrutina ADC antes del la subrutina Main

y quitando estas lineas

int main (void);
void adc (void);

y no entiendo para que declaras como integer la subrutina main.
int main (void)

osea que yo lo probaria asi:

Código:
#include <p33FJ12GP202.h>
#define fcy 16000000
   _FOSC ( FCKSM_CSDCMD & IOL1WAY_OFF & OSCIOFNC_OFF & POSCMD_XT );

void adc(void)
{
    TRISA=0X0001;    //ENTRADA POR RA0
    AD1PCFGL=0;        //ENTRADAS ANALÓGICAS
    AD1CON1bits.AD12B=1;//ADC DE 12 BITS}
    AD1CON2bits.VCFG=0;
    AD1CON3=33;

    AD1CON1bits.ASAM=1;
    AD1CON1bits.SSRC=1;///TERMINA EL MUESTREO
    AD1CON1bits.FORM=0;
    IFS0bits.AD1IF=1;
    AD1CON1bits.DONE=1;

    IFS0bits.AD1IF=0;
    IPC0bits.T1IP=1;


}

void main (void)
{
    TRISB=0X0000;
    adc();
    AD1CON1bits.ADON=1;        //SE HABILITA EL ADC
while (1)
{
    AD1CON1bits.SAMP=1;//INICIA EL MUESTREO
    delay_ms(3);
    AD1CON1bits.SAMP=0;//TERMINA EL MUESTREO
    while(!AD1CON1bits.DONE);// SE HA REALIZADO LA CONVERSIÓN?
    PORTB=ADC1BUF0;    //LOS DATOS SE GUARDAN EN EL BUFER 0 DEL ADC Y SE MANDAN AL PUERTO B                                                                 
}    
}
 
Última edición:
Atrás
Arriba