Autor Tema: [SOLUCIONADO]No puedo instalar una pantalla LCD en mi proyecto  (Leído 196 veces)

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

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 664
    • https://electronicaaficion.wordpress.com/
Hola a todos, me van a llamar pesado de tanto que pregunto  :oops:

Pues a mi proyecto le quiero poner un display LCD de 2x16 (el típico) pues le añado los archivos correspondientes, los que vienen en la librerías de microchip (Microchip libraries for applications), me creo un archivo nuevo llamado xlcd.c para poner ahí una funciones de manejo del LCD y cuando compilo me da un error que no sé de donde viene ni por qué se produce por que al parecer está todo correcto (supuestamente faltará algo por que si no no daría el error :?), el error es este:

Código: [Seleccionar]
Driver/XLCD/xlcd.c:139: error: (1098) conflicting declarations for variable "comandXLCD" (Driver/XLCD/xlcd.c:139)
el archivo es este:
Código: [Seleccionar]

void DelayFor18TCY(void){ //Donde se ajusta la velocidad de muestreo
Delay10TCYx(120);
}

void DelayPORXLCD(void){ //Delay de 15ms
Delay1KTCYx(180);
}

void DelayXLCD(void){ //Delay de 5ms
Delay1KTCYx(60);
}

void LcdInit(void) {

OpenXLCD(FOUR_BIT & LINES_5X7); //Configuramos el lcd como de 4 hilos
while( BusyXLCD() ); //wait untill LCD controller is busy
comandXLCD(DON | CURSOR_OFF | BLINK_OFF ); //Display ON, Cursor Off, Blink Off
while( BusyXLCD() ); //wait untill LCD controller is busy
// comandXLCD(INCREMENT);
while( BusyXLCD() ); //wait untill LCD controller is busy
}

void comandXLCD(uint8_t a){ //Envío de comandos para la configuración
BusyXLCD();   //del cursos y el display
WriteCmdXLCD(a);
}

void gotoxyXLCD(uint8_t x, uint8_t y){//Función con la que podemos elegir posición
unsigned char direccion;

if(y != 1)
direccion = 0x40;
else
direccion = 0;

direccion += x-1;
comandXLCD(0x80 | direccion);
while( BusyXLCD() ); //wait untill LCD controller is busy
}



Le he añadido esas funciones que he creado nuevas al archivo de cabecera xlcd.h y he referenciado ese archivo de cabecera a este y nada, ya no sé por donde más mirar a ver si alguien me echa una mano

« Última modificación: 18 de Mayo de 2018, 09:07:04 por Thulsa Doom »
Más códigos y desarrollos en https://electronicaaficion.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 6550
Re:No puedo instalar una pantalla LCD en mi proyecto
« Respuesta #1 en: 16 de Mayo de 2018, 23:52:54 »
me mataste porque jamas use esa libreria. Y el error es absurdo.

Imagino que el error lo da en 1 linea por ves en cada comandXLCD. Me dijaria que los .h esten incluido en el proyecto.
Como no tengo las librerias, si me pasas el proyecto con las librerias lo puedo llegar a probar.

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re:No puedo instalar una pantalla LCD en mi proyecto
« Respuesta #2 en: 17 de Mayo de 2018, 03:57:43 »
Hola Thulsa Doom no se si lo habrás hecho pero tienes que añadir todas las librerías referenciadas al lcd dentro del proyecto.
Otra cosa la funcion WriteCmdXLCD no deberia de ser unsigned char
 
Código: C
  1. /* WriteCmdXLCD
  2.  * Writes a command to the LCD
  3.  */
  4. void WriteCmdXLCD(PARAM_SCLASS unsigned char);

Saludos.
« Última modificación: 17 de Mayo de 2018, 04:37:53 por Miquel_S »
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 664
    • https://electronicaaficion.wordpress.com/
Re:No puedo instalar una pantalla LCD en mi proyecto
« Respuesta #3 en: 17 de Mayo de 2018, 07:01:35 »
Hola, si, esta todo referenciado y estaba funcionando, de repente ha dejado de funcionar todo y tengo muchos problemas con las cabeceras, no me reconoce ni las macros que he puesto en el campo Define macro que se encuentra en las propiedades del compilador, y muchas definiciones de archivos de cabecera me los ha desactivado.
Tengo activada la casilla Use CCI syntax y si la desactivo cambia las referencias también.
Esta es la parte que mas me cuesta, que el proyecto quede todo estructurado y con todos sus archivos de cabecera trabajando bien.

Lo de esa función viene por defecto en las librerías de Microchip, ¿cómo debería de ser?
Más códigos y desarrollos en https://electronicaaficion.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 664
    • https://electronicaaficion.wordpress.com/
Re:No puedo instalar una pantalla LCD en mi proyecto
« Respuesta #4 en: 18 de Mayo de 2018, 06:57:57 »
He probado de todo y no hay manera, he montado un proyecto por separado solo del LCD y si funciona pero el proyecto donde tengo todo no, hasta he probado a crear un proyecto nuevo y sigue el problema y no encuentro que puede estar mal, el compilador no me dice nada si no que hay una declaración inválida.


Subo el proyecto del LCD solo por si a alguien le vale para algo
*Manejo_XLCD.X.7z
(168.13 kB - descargado 2 veces)
« Última modificación: 18 de Mayo de 2018, 07:13:26 por Thulsa Doom »
Más códigos y desarrollos en https://electronicaaficion.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re:No puedo instalar una pantalla LCD en mi proyecto
« Respuesta #5 en: 18 de Mayo de 2018, 08:18:50 »
Gracias voy a probar tu proyecto yo también tengo problemas con las librerías.
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 664
    • https://electronicaaficion.wordpress.com/
Re:No puedo instalar una pantalla LCD en mi proyecto
« Respuesta #6 en: 18 de Mayo de 2018, 09:06:40 »
Hola, pues ya me funciona, era una tontería, me explico, tengo como costumbre hacerme un archivo de cabecera donde meto todos los archivos de cabecera de todo el proyecto y luego llamo ese archivo desde todos los .c, pues se ve que esta vez no me funcionó bien y tuve que separar los headers y colocarlos de la siguiente manera, los que son globales los puse en main.h y los propio de cada periférico en su archivo .c que pertenece al periférico, y si llamo alguna función de ese periférico desde main.c colocar el header en main.c.

Pues coloqué el header de xlcd en main.c y ahora si funciona.  :-/

Llevo unos días con la cabeza vuelta loca con esta tontería  :5]

Gracias
Más códigos y desarrollos en https://electronicaaficion.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 664
    • https://electronicaaficion.wordpress.com/
Re:[SOLUCIONADO]No puedo instalar una pantalla LCD en mi proyecto
« Respuesta #7 en: 18 de Mayo de 2018, 09:39:08 »
Y yo pregunto una cosa, ¿en lugar de usar delays en la librería XLCD no se pueden usar la librería Tick y usar el timer0 para hacer esos retardos?
Más códigos y desarrollos en https://electronicaaficion.wordpress.com/ date una vuelta y curiosea un rato...

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 6550
Re:[SOLUCIONADO]No puedo instalar una pantalla LCD en mi proyecto
« Respuesta #8 en: 18 de Mayo de 2018, 10:24:54 »
Y yo pregunto una cosa, ¿en lugar de usar delays en la librería XLCD no se pueden usar la librería Tick y usar el timer0 para hacer esos retardos?

Y lo único que logras es desperdiciar un modulo y tal ves ganes un poco de espacio.. Ya que el tiempo debe estar y no podes enviar nada hasta que se termine, si podes hacer OTRA cosa, pero es implica que la librería sea programada como una maquina de estados para sea llamada cada ves que termine el tiempo, y salga de la función cuando necesite esperar.

Entonces terminas haciendo una funcion que es bloqueante,,, esperar un delay o esperar que un timer te indica que paso el tiempo es "esperar" en ambos casos por lo que no hay diferencia.

Desconectado Thulsa Doom

  • PIC24F
  • *****
  • Mensajes: 664
    • https://electronicaaficion.wordpress.com/
Re:[SOLUCIONADO]No puedo instalar una pantalla LCD en mi proyecto
« Respuesta #9 en: 20 de Mayo de 2018, 05:56:09 »
mmmm, entendido, muchas gracias por la explicación,  ((:-)) :lol:
Más códigos y desarrollos en https://electronicaaficion.wordpress.com/ date una vuelta y curiosea un rato...


 

anything