TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado 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
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);
}
-
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
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
-
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
-
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.
-
Y para el compilador xc8 como hago para escribir el equivalente en texto
-
Para convertir un entero a ascii existe la función ITOA. En el manual del compilador hay un ejemplo de como emplearla.
-
Parece ser que ahora si que realiza la conversión pero compilandolo me ofrece el siguiente error el MPLABX con el compilador XC8
: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
-
Muestra el código actual que estás utilizando.