Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

07/01/2015 #1


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;


}
08/01/2015 #2

Avatar de papirrin

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                                                                 
}    
}
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.