Autor Tema: XC8, printf y LCD  (Leído 8149 veces)

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

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
XC8, printf y LCD
« 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.
« Última modificación: 11 de Diciembre de 2012, 18:11:27 por fidodido18 »

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: XC8, printf y LCD
« Respuesta #1 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!
No contesto mensajes privados, las consultas en el foro

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
Re: XC8, printf y LCD
« Respuesta #2 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...

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: XC8, printf y LCD
« Respuesta #3 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!
No contesto mensajes privados, las consultas en el foro

Desconectado gamuu

  • PIC10
  • *
  • Mensajes: 9
Re: XC8, printf y LCD
« Respuesta #4 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

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: XC8, printf y LCD
« Respuesta #5 en: 13 de Febrero de 2013, 08:51:05 »
Hola, te subo un programita de ejemplo,,,
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado lagruya

  • PIC16
  • ***
  • Mensajes: 204
Re: XC8, printf y LCD
« Respuesta #6 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!

Desconectado lagruya

  • PIC16
  • ***
  • Mensajes: 204
Re: XC8, printf y LCD
« Respuesta #7 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.

Desconectado danfly

  • PIC10
  • *
  • Mensajes: 10
Re: XC8, printf y LCD
« Respuesta #8 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