Hola todos,
En vista de que todo el mundo parece preferir el C sobre el Assembler para los PICs 18Fxxxx he decidido encarar una aplicación de práctica sobre un 18F4550 usando el mcc18.
Como primera aproximación (después de haber hecho blinkear un par de leds como para asegurarme de que el programador, el micro y mi placa prototipo funcionan, encaré un LCD de 20x4 (Wintek, HD44780 compatible) que ya había hecho funcionar sin demasiados problemas en mis viejos 16Fxx (en assembler, claro).
El tema es que, luego de muchas pruebas, no he conseguido configurar correctamente el display. Por cada caracter que mando escribe dos, pero de basura. Sospecho que no recibe bien el comando que lo configura para 4 líneas y por eso entiende que recibe dos caracteres. Según creo, en el modo de 4 bits, el micro descompone cada byte en dos y manda 1/2 byte cada vez. Parece que el display toma cada mitad como un caracter completo y por eso escribe 2.
Estoy usando la xlcd.h tal como viene, ya que conecté 4 líneas del LCD al nibble más bajo [0,3] del PORTB y RS, RW y E tal como las define la rutina. Así que lo único que tendría que definir en mi programa son los retardos, de acuerdo al cristal (20 Mhz) que estoy usando, cosa que hice, calculando como dice el manual (probé con 20 Mhz y con 48Mhz, por las dudas).
Mi pregunta concreta es: ¿cómo debo recomplilar las rutinas XLCD y como debo incluirlas para que el compilador tome las nuevas definiciones? ¿Basta con agregar xlcd.h al proyecto en MPLAB (y correr Build All, obvio) o hay que hacer algo más?
Si eso lo estoy haciendo bien, como creo ¿a alguien se le ocurre cuál puede ser el problema? ¿Alguna experiencia similar?
Gracias y saludos,
--
Miguel