TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: manwenwe en 25 de Octubre de 2006, 11:45:31
-
Hola! ¿Alguien ha conseguido que le funcione el LCD programando en C18? Lo estoy intentando pero no lo consigo y eso que creo que sigo correctamente los pasos que da el manual de Micrcochip. El código es muy simple:
#include <p18f452.h>
#include <delays.h>
#include <xlcd.h>
void main(void)
{
char data= 'M';
OpenXLCD( EIGHT_BIT & LINES_5X7 );
while(BusyXLCD());
WriteDataXLCD(data);
while(1);
}
void DelayFor18TCY(void) // Retardo de 20 ciclo...
{
Delay10TCYx(2);
return;
}
void DelayXLCD(void) // Retardo de 5 ms a 4Mhz...
{
Delay1KTCYx(5);
return;
}
void DelayPORXLCD(void) // Retardo de 15 ms a 4Mhz...
{
Delay1KTCYx(15);
return;
}
No he tocado nada de XLCD.h ni de los fuentes. Con lo que las conexiones quedan:
PIC LCD
RBO========>D4
RB1========>D5
RB2========>D6
RB3========>D7
RB4========>E
RB5========>RS
RB6========>RW
Lo de las lineas de datos no lo tengo muy claro, xq no lo especifíca en el manual pero creo que lo lógico es que los bits del nibble bajo de PORTB se correspondan con las lineas del LCD como lo he puesto(¿no?). El caso es que simulo en Proteus y nada de nada. Si alguien tiene alguna sugerencia... Muchas gracias, seguiré intentandolo y ya comento. algo...
-
Bueno creo que no leí del todo bien el manual..... :shock: Para que funcione he cambiado "OpenXLCD( EIGHT_BIT & LINES_5X7 );" por "OpenXLCD( FOUR_BIT & LINES_5X7 );"... ya que lo tenía a cuatro hilos(vaya despiste... :-)). El caso es que he visto que puedes adaptar las librerias para trabajar con los pines que tu desees pero debes recompilar los fuentes; en el manual pone lo siguiente: "Use the Application Maestro to configure your code as required", pero no tengo muy claro que es lo que quiere decir. Alguien sabe como es esto de recompilar las librerias¿? Gracias de nuevo! Para lo que necesiteis. Manu
-
Bueno creo que no leí del todo bien el manual..... :shock: Para que funcione he cambiado "OpenXLCD( EIGHT_BIT & LINES_5X7 );" por "OpenXLCD( FOUR_BIT & LINES_5X7 );"... ya que lo tenía a cuatro hilos(vaya despiste... :-)). El caso es que he visto que puedes adaptar las librerias para trabajar con los pines que tu desees pero debes recompilar los fuentes; en el manual pone lo siguiente: "Use the Application Maestro to configure your code as required", pero no tengo muy claro que es lo que quiere decir. Alguien sabe como es esto de recompilar las librerias¿? Gracias de nuevo! Para lo que necesiteis. Manu
El application maestro no lo he utilizado, he hecho algunas pruebas pero gralmente te genera código en ensamblador, no en C para las rutinas en cuestión.
Mi sugerencia es que copies todo el código de las librerías (que está en la carpeta XLCD) y el archivo .h en tu proyecto. Ahí modifica la definición de pines.
Luego , en tu include, llama al archivo .h con comillas (no con < y >). Eso permite que el compilador busque el archivo .h en tu proyecto y no en las librerías precompiladas de Microchip
-
Eso es mas o menos lo que he hecho.... he copiado(cambiando el nombre) el archivo de cabecera modificado en el directorio de mi proyecto; e incluido todos los codigos(.c) que contenian las funciones declararadas en el .h y les he cambiado el include a todos por el nuevo .h, finalmente he compilado todo el proyecto y....pues nada de nada no me funciona... no se si ponerme a llorar jejejeje. Gracias por "tu tiempo" Maunix!!
-
Bueno creo que ya he comprendido como hacerlo... el caso es que debes copiar los fuentes(.c) en el directorio del proyecto. Es lo que decias tú Maunix ¿no?. Creo que no te entendí bien. El caso es que yo copiaba el archivo de cabecera en mi directorio, modificaba los fuentes y los incluía en el proyecto(pero desde el directorio original) con lo que C18 los compilaba todos pero al tener de antemano los .o (codigo ya compilado ¿no?) no les hacia caso... Bueno, pues gracias de nuevo Maunix.
-
Bueno creo que ya he comprendido como hacerlo... el caso es que debes copiar los fuentes(.c) en el directorio del proyecto. Es lo que decias tú Maunix ¿no?. Creo que no te entendí bien. El caso es que yo copiaba el archivo de cabecera en mi directorio, modificaba los fuentes y los incluía en el proyecto(pero desde el directorio original) con lo que C18 los compilaba todos pero al tener de antemano los .o (codigo ya compilado ¿no?) no les hacia caso... Bueno, pues gracias de nuevo Maunix.
A ver si nos entendemos.
Puedes dejar los archivos en su ubicación original, pero en el archivo .h en la ubicación original debes cambiar la configuración de los bits.
La sugerencia de que copies los .c y el .h en tu propio proyecto es para que mantengas el codigo fuente original de Microchip por las dudas ;)
Además tu modificabas el .h y lo ubicabas en tu proyecto pero los .c seguramente apuntaban al .h que hizo microchip en su carpeta original. He ahí donde te decía que radicaba tu problema.
También es cierto que si están los .o no los volverá a generar, pero esto es porque el código fuente de esos .c apuntaba al .h anterior y no al nuevo. Si apuntara al nuevo cada cambio en el .h por más que estén los .o obligará al compilador a recompilar tus códigos fuente.
Otra forma de obligar a recompilar un código , es hacer CTRL+F10 y eso ejecuta el comando CLEAN antes de compilar , eliminando todos los archivos temporales e intermedios.
Saludos