TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: fidodido18 en 11 de Diciembre de 2012, 18:07:33

Título: XC8, printf y LCD
Publicado por: fidodido18 en 11 de Diciembre de 2012, 18:07:33
Hola amigos foreros!

he visto gracias a varios tutoriales de nuestro colaborador suky***, como modificar para utilizar el printf en el lcd. Sin embargo en XC8 no he encontrado la forma de hacerlo, ya que no encuentro los archivos que debemos cambiar(write.c). Me podrían ayudar a encontrar estos archivos a modificar, o que tengo que hacer de diferente cuando paso de C30 a XC8.

gracias!

*** http://www.micros-designs.com.ar/mplab-c30-pic24/ pagina 47.
Título: Re: XC8, printf y LCD
Publicado por: Suky en 11 de Diciembre de 2012, 19:46:54
Hola! No he utilizado XC8 en ese sentido, pero me parece que hay que crear una función void putch(unsigned char) que escriba en el LCD o periférico deseado.


Saludos!
Título: Re: XC8, printf y LCD
Publicado por: fidodido18 en 11 de Diciembre de 2012, 22:08:58
Hola! No he utilizado XC8 en ese sentido, pero me parece que hay que crear una función void putch(unsigned char) que escriba en el LCD o periférico deseado.


Saludos!

y si le quiero dar formato,por ejemplo a un flotante o un valor hexadecimal. Entonces tendría que crear una función: void putfl(float flotante); y void puthex(char hexadecimal);??

lo sospeche desde un principio  :D pero pensé que si ya estaba hecho para que volverlo hacer? como dice otro gran forero: "¿para que reinventar la rueda?"

gracias por tu ayuda suky...
Título: Re: XC8, printf y LCD
Publicado por: Suky en 12 de Diciembre de 2012, 11:35:12
Hola! No, putch sería un intermediario para enviar el byte por el medio seleccionado... O sea, printf para enviar el string formateado utilizaría esa función... Nuevamente comento que no le he utilizado, pero en Hi-tech por lo que he leido se usaba así.


Saludos!
Título: Re: XC8, printf y LCD
Publicado por: gamuu en 13 de Febrero de 2013, 02:01:04
Hola:
Estoy teniendo el mismo problema, pero en el User Guide XC8 Microchip en la seccion 5.11.1 explica como utilizar la funcion printf.
Ahora no tengo tiempo de leerlo, pero mañana lo leo y si lo soluciono, te aviso.

Saludos Gamuu
Título: Re: XC8, printf y LCD
Publicado por: todopic en 13 de Febrero de 2013, 08:51:05
Hola, te subo un programita de ejemplo,,,
Título: Re: XC8, printf y LCD
Publicado por: lagruya en 14 de Febrero de 2013, 02:55:22
todopic, gracias por el archivo lcd_pic16.c  ((:-)) , estoy estudiando ansi c para familiarizarme con xc8 y como ejercicio me propuse escribir un programa para manejar LCD, me resulta muy util mirar el codigo del archivo para entender algunos conceptos y maneras de encarar problemas!!!!!
cuando termine el codigo lo subo, seguro servira para iniciarce en el tema, abrazo!
Título: Re: XC8, printf y LCD
Publicado por: lagruya en 15 de Febrero de 2013, 01:27:25
No quiero desviar el post original, pero mirando el codigo de lcd_pic16.c creo que hay un problema en las etiquetas para los comandos del LCD:

#define SHIFT_CUR_LEFT      0b00000100  /* Cursor shifts to the left   */
#define SHIFT_CUR_RIGHT   0b00000101  /* Cursor shifts to the right  */
#define SHIFT_DISP_LEFT     0b00000110  /* Display shifts to the left  */
#define SHIFT_DISP_RIGHT  0b00000111  /* Display shifts to the right */

segun la hoja de datos el bit1 es el que controla el desplazamiento del cursor o mejor dicho el incremento de la direccion de DDRAM
y el bit0 es el que determina el desplazamiento del display dependiendo el sentido del valor del bit1

bit1 = 0 el cursor se mueve a la izq (decremento de la direccion de DDRAM)
bit1 = 1 el cursor se mueve a la der (incremento de la direccion de DDRAM)

bit0 = 0 el display no se mueve (es decir no se desplaza a lo largo de las 40 caracteres que puede almacenar por linea, se queda fijo en los 16 visibles en los que se encuentre direccionado)
bit0 = 1 el display se mueve luego de cada escritura en DDRAM segun la direccion fijada en bit1

esto lo interpreto de la hoja de datos del lcd que estoy usando que es compatible con el hitachi, segun veo en las definiciones estan invertidos los bits 1 y 0.
estoy en lo cierto?

saludos.
Título: Re: XC8, printf y LCD
Publicado por: danfly en 21 de Abril de 2014, 12:44:51
Hola, pues he mirado, y les digo que después de mucho darme contra la pared por fin estoy logrando hacer una librería a partir de la original que sirve para cualquier PIC, diooooos pero que dolor que cabeza, esa librería de paso vino con errores, el amigo lagruya mencionó el error pero te equivocaste en decir que es de la librería lcd_pic16.c que han aportado aquí, ese error es heredado de la librería original, yo también lo noté después de no entender por muchas horas por que escribía solo una letra :? y justo estoy viendo tu comentario y que casualidad que coincidan.

Pero sí, definitivamente a la gente de Microchip le falta mucho camino por recorrer, estoy pensando hacer un blog donde cada uno pueda enviar sus aportes específicos para mejorar y facilitar el uso del compilador XC8, por ejemplo ir portando todas las librerías de pic18 a las familias mas bajas, además ir reportando bugs que cuenten con el sustento de muchas firmas, así ojalá les presten mas atención. De hecho haciendo mi librería he encontrado un montón de problemas del compilador, les listo algunos por si alguno también se rompe la cabeza

1. No se pueden usar librerías personales que tengan el mismo nombre de alguna de las librerías de microchip, incluso si cambias algunas mayúsculas, el compilador va a ignorar la tuya y va a compilar con la original. Dicho sea de paso, no importa que metas una dirección absoluta, igual tomará la original. Bueno esto me pasa a mí usando linux, si alguno puede confirmar este problema en windows??
2. El error que menciona el amigo lagruya, la librería viene mala por defecto.
3. Aún cuando estoy utilizando mi propia librería y con distinto nombre, intentando corregir el error nº2 en mi librería personal, el compilador me tiró una advertencia de que estaba sobreescribiendo algunas definiciones que la librería xlcd.h ya había hecho.. ¬¬ lo solucioné desactivando la opción plib, en el linker del compilador