Autor Tema: pic 16f84a se cuelga al hacer lcd_init(); (CCS)  (Leído 3924 veces)

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

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
pic 16f84a se cuelga al hacer lcd_init(); (CCS)
« en: 16 de Abril de 2008, 15:57:24 »
Buenas foro!!!
Tengo un problemita con un LCD de 16x2 y un PIC16f84a. Conecté todo según este esquemático:


Y el codigo es el siguiente:

Código: [Seleccionar]
#include <16f84a.h>

#fuses XT,NOWDT,NOPROTECT,PUT
#use delay(clock=4000000)

#use fast_io(a)
#use fast_io(b)

#define use_portb_lcd TRUE
#include "lcd.c"

void main()
{
   set_tris_b(0x00);   //portb como salida
   set_tris_a(0x00);   //porta como salida
   disable_interrupts(GLOBAL);   //todas las interrupciones desactivadas

      output_high(PIN_A2);
      delay_ms(1500);
      output_low(PIN_A2);
      delay_ms(1000);
   lcd_init();
 
     output_high(PIN_A2);
     delay_ms(100);
     output_low(PIN_A2);
     delay_ms(100);
     output_high(PIN_A2);
     delay_ms(100);
     output_low(PIN_A2);
   while(TRUE)
   {
      printf(lcd_putc,"First Line");
      printf(lcd_putc,"\nSecond Line");
         delay_ms(500);
         output_high(PIN_A2);
         delay_ms(500);
         output_low(PIN_A2);
   }
}

como verán agregué unas líneas que dan destellos de un LED en el pin A2, y así es como me di cuenta que se cuelga en la linea de init_lcd();
Alguien sabe en qué le erré? muchas gracias de antemano!!!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: pic 16f84a se cuelga al hacer lcd_init(); (CCS)
« Respuesta #1 en: 16 de Abril de 2008, 17:00:58 »
Has mirado la libreria lcd.c ??
Alli entre las primeras lineas esta la configuracion del conexionado y su declaracion.
Puedes usar el portB para datos a 4 bits y ademas deberas conectar E, Rs y W todos al puerto, sino no andara nunca.
La libreria esta hecha para leer cuando el lcd se desocupa, demodo que si o si va conectada el bit W.... :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado elmasvital

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 1713
Re: pic 16f84a se cuelga al hacer lcd_init(); (CCS)
« Respuesta #2 en: 16 de Abril de 2008, 17:05:06 »
La experiencia dice que no se cuelga... seguramente la inicialización no se hace correctamente... o se queda eternamente esperando una respuesta del bit busy

 amplia tiempos de espera si puedes trazar el programa

Desconectado MGLSOFT

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: pic 16f84a se cuelga al hacer lcd_init(); (CCS)
« Respuesta #3 en: 16 de Abril de 2008, 17:59:14 »
La libreria establece estas conexiones:

Código: C
  1. // As defined in the following structure the pin connection is as follows:
  2. //     D0  enable
  3. //     D1  rs
  4. //     D2  rw
  5. //     D4  D4
  6. //     D5  D5
  7. //     D6  D6
  8. //     D7  D7
  9. //
  10. //   LCD pins D0-D3 are not used and PIC D3 is not used.
  11.  
  12. // Un-comment the following define to use port B
  13. // #define use_portb_lcd TRUE
  14.  
  15.  
  16. struct lcd_pin_map {                 // This structure is overlayed
  17.            BOOLEAN enable;           // on to an I/O port to gain
  18.            BOOLEAN rs;               // access to the LCD pins.
  19.            BOOLEAN rw;               // The bits are allocated from
  20.            BOOLEAN unused;           // low order up.  ENABLE will
  21.            int     data : 4;         // be pin B0.
  22.         } lcd;

Primero debes quitar el comentario en la linea
#define use_portb_lcd TRUE

y tendras que los pines deberan ser conectados asi:
     B0  enable
     B1  rs
     B2  rw
     B4  D4
     B5  D5
     B6  D6
     B7  D7
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: pic 16f84a se cuelga al hacer lcd_init(); (CCS)
« Respuesta #4 en: 16 de Abril de 2008, 23:37:35 »
que gil que soy!!!! tienen razón, como no me puse a leer la librería?! de ahora en mas no se me vuelve a pasar!
mil gracias por la ayuda, ya hice aparecer un par de lineas, tan solo conecté todo como dijeron y con el mismo código funcionó!
ahora voy a ver q tanto puedo explotar esto ;)
nuevamente, gracias!!! y disculpen las molestias

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein