TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: horty69 en 15 de Junio de 2014, 14:23:06

Título: Duda conversion ADC
Publicado por: horty69 en 15 de Junio de 2014, 14:23:06
Hola,
estoy intentando medir la temperatura de un LM35 y mostrarla en un LCD, pero me aperecen letras muy extrañas del codigo ansi o numeros pero todo muy al azar.
Dejo el cógido haber si alguien me puede ayudar a encontrar el fallo

Código: [Seleccionar]
TRISA = 0x00;
    PORTA = 0x00;
    ANSELbits.ANS0=1;

    ADCON0bits.ADCS0=1;
    ADCON0bits.ADCS1=1;

    ADCON0bits.CHS0=0;
    ADCON0bits.CHS1=0;
    ADCON0bits.CHS2=0;
    ADCON0bits.CHS3=0;
    ADCON1bits.ADFM=0;
    int adc=0;
while(1){
        ADCON0bits.ADON=1; //Activa ADC
        __delay_ms(1);
        ADCON0bits.GO=1;
        while(ADCON0bits.GO);
        ADCON0bits.ADON=0;  // Desactiva ADC
        __delay_ms(1);
        adc=ADRESH;
        adc=adc<<8;
        adc=adc+ADRESL;
       
        lcd_send_cmd(LCD_LN2);
        lcd_send_dat(adc);
        __delay_ms(100);
       
       
        }

Título: Re: Duda conversion ADC
Publicado por: soymoe en 15 de Junio de 2014, 17:55:25
Hola,
estoy intentando medir la temperatura de un LM35 y mostrarla en un LCD, pero me aperecen letras muy extrañas del codigo ansi o numeros pero todo muy al azar.
Dejo el cógido haber si alguien me puede ayudar a encontrar el fallo

Código: [Seleccionar]
TRISA = 0x00;
    PORTA = 0x00;
    ANSELbits.ANS0=1;

    ADCON0bits.ADCS0=1;
    ADCON0bits.ADCS1=1;

    ADCON0bits.CHS0=0;
    ADCON0bits.CHS1=0;
    ADCON0bits.CHS2=0;
    ADCON0bits.CHS3=0;
    ADCON1bits.ADFM=0;
    int adc=0;
while(1){
        ADCON0bits.ADON=1; //Activa ADC
        __delay_ms(1);
        ADCON0bits.GO=1;
        while(ADCON0bits.GO);
        ADCON0bits.ADON=0;  // Desactiva ADC
        __delay_ms(1);
        adc=ADRESH;
        adc=adc<<8;
        adc=adc+ADRESL;
       
        lcd_send_cmd(LCD_LN2);
        lcd_send_dat(adc);
        __delay_ms(100);
       
       
        }

Proba primero que la rutina del lcd ande...lo mas probable es que no este andando bien
Título: Re: Duda conversion ADC
Publicado por: horty69 en 15 de Junio de 2014, 17:58:47
El lcd me funciona perfectamente, lo que yo creo que no hago bien la conversion ADC ya que me pone todo tipo de caracteres aleatorios en la pantalla y no entiendo porque es
Título: Re: Duda conversion ADC
Publicado por: MerLiNz en 15 de Junio de 2014, 18:11:28
yo creo que es porque al poner lcd_send_dat(adc) lo que haces es poner el ascii de la variable adc y no el equivalente en texto.
Título: Re: Duda conversion ADC
Publicado por: horty69 en 15 de Junio de 2014, 19:38:59
Y para el compilador xc8 como hago para escribir el equivalente en texto
Título: Re: Duda conversion ADC
Publicado por: AngelGris en 15 de Junio de 2014, 22:55:30
  Para convertir un entero a ascii existe la función ITOA. En el manual del compilador hay un ejemplo de como emplearla.
Título: Re: Duda conversion ADC
Publicado por: horty69 en 17 de Junio de 2014, 13:03:20
Parece ser que ahora si que realiza la conversión pero compilandolo me ofrece el siguiente error el MPLABX con el compilador XC8

Citar
:0: error: can't find 0x3E words (0x3e withtotal) for psect "text9" in class "CODE" (largest unused contiguous range 0x3A)
:0: error: can't find 0x3B words (0x3b withtotal) for psect "text15" in class "CODE" (largest unused contiguous range 0x3A)
:0: error: can't find 0x2E words (0x2e withtotal) for psect "text16" in class "CODE" (largest unused contiguous range 0x12)
:0: error: can't find 0x2A words (0x2a withtotal) for psect "text6" in class "CODE" (largest unused contiguous range 0x12)
:0: error: can't find 0x28 words (0x28 withtotal) for psect "text4" in class "CODE" (largest unused contiguous range 0x12)
:0: error: can't find 0x26 words (0x26 withtotal) for psect "idataBANK3" in class "CODE" (largest unused contiguous range 0x12)
:0: error: can't find 0x25 words (0x25 withtotal) for psect "text14" in class "CODE" (largest unused contiguous range 0x12)
:0: error: can't find 0x23 words (0x23 withtotal) for psect "text3" in class "CODE" (largest unused contiguous range 0x12)
:0: error: can't find 0x1C words (0x1c withtotal) for psect "idataBANK1" in class "CODE" (largest unused contiguous range 0x12)
:0: error: can't find 0x10 words (0x10 withtotal) for psect "text17" in class "CODE" (largest unused contiguous range 0xB)
:0: error: can't find 0x8 words (0x8 withtotal) for psect "clrtext" in class "CODE" (largest unused contiguous range 0x6)

Llevo dandole vueltas todo el rato y no entiendo porque puede ser, a parte de que no me manda a ninguna línea donde pueda encontrarse el fallo
Título: Re: Duda conversion ADC
Publicado por: AngelGris en 17 de Junio de 2014, 18:44:32
  Muestra el código actual que estás utilizando.