Autor Tema: XLCD - PORTD - 18F4550  (Leído 12207 veces)

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

Desconectado AV9

  • PIC10
  • *
  • Mensajes: 43
Re: XLCD - PORTD - 18F4550
« Respuesta #30 en: 16 de Enero de 2011, 20:22:11 »
OK, voy a probarlo, pero una cosa, yo no tenía agregados ni stdout.c ni _user_putc.c, aunque acabo de agregarlos sin tocar nada y no va.

Voy a probar con lo tuyo.

Desconectado AV9

  • PIC10
  • *
  • Mensajes: 43
Re: XLCD - PORTD - 18F4550
« Respuesta #31 en: 16 de Enero de 2011, 20:27:17 »
Nada, no compila y me sigue dando el error sintáctico.

Desconectado gary_servin

  • PIC12
  • **
  • Mensajes: 65
Re: XLCD - PORTD - 18F4550
« Respuesta #32 en: 16 de Enero de 2011, 20:30:37 »
En C18 se deben agregar todos los archivos fuentes que han sido modificados o en los que se utilicen datos que han sido modificados, este es el caso de los archivos para el lcd, y tambien el caso del _user_putc.c!

Si te fijas en el archivo xlcd.h, putcXLCD realmente no es una funcion, sino que es una etiqueta #define putcXLCD WriteDataXLCD, el compilador aparentemente no la reconoce como una función en si y por eso, si en el _user_putc.c la utilizas, da un error de que no se la encuentra, entonces, lo que hice fue utilizar la funcion WriteDataXLCD.

Espero que se entienda algo de lo que trata de explicar, si algo esta equivocado, porfavor corrijan! No se si esta es la solucion optima, pero al menos funciona!

Saludos!

Desconectado gary_servin

  • PIC12
  • **
  • Mensajes: 65
Re: XLCD - PORTD - 18F4550
« Respuesta #33 en: 16 de Enero de 2011, 20:31:24 »
Nada, no compila y me sigue dando el error sintáctico.

Que error te da ahora? a mi me funciona de maravillas!

Desconectado AV9

  • PIC10
  • *
  • Mensajes: 43
Re: XLCD - PORTD - 18F4550
« Respuesta #34 en: 16 de Enero de 2011, 20:35:28 »
JUUUUUeer que envidia!!!! qué estaré haciendo mal!!!

A ver...te pego lo que tengo para ver si la stoy cagando:

main.c :

//Archivo con definición de registros y bits del microcontrolador elegido
#include <p18f4550.h>
#include <delays.h>
#include <xlcd.h>
#include <stdio.h>
#include <usart.h>
//Configuración de los Fuses del microcontrolador
#pragma config FOSC=XT_XT ,FCMEN=OFF ,IESO=OFF ,CPUDIV=OSC1_PLL2
#pragma config PWRT=ON ,BOR=OFF ,BORV=0 ,WDT=OFF ,WDTPS=32768
#pragma config MCLRE=ON ,LPT1OSC=OFF ,PBADEN=OFF ,CCP2MX=OFF
#pragma config STVREN=OFF ,LVP=OFF ,XINST=OFF ,DEBUG=OFF
#pragma config CP0=OFF ,CP1=OFF ,CP2=OFF ,CPB=OFF ,CPD=OFF
#pragma config WRT0=OFF ,WRT1=OFF ,WRT2=OFF
#pragma config WRTB=OFF ,WRTC=OFF ,WRTD=OFF
#pragma config EBTR0=OFF ,EBTR1=OFF ,EBTR2=OFF ,EBTRB=OFF

void DelayFor18TCY(void){
   Delay10TCYx(2);
}
void DelayPORXLCD(void){
   Delay1KTCYx(15);
}
void DelayXLCD(void){
   Delay1KTCYx(2);
}
// Envia comando al LCD
void comandXLCD(unsigned char a){
   BusyXLCD();
   WriteCmdXLCD(a);
}
// Ubica cursor en (x = Posición en linea, y = n&#186; de linea)
void gotoxyXLCD(unsigned char x, unsigned char y){
unsigned char direccion;
   
   if(y != 1)
      direccion = 0x40;
   else
      direccion=0;
   
   direccion += x-1;
   comandXLCD(0x80 | direccion);
}

void main(void){
   
   char Buffer[12]={"2 linea...};
   unsigned char Variable=125;

   OpenXLCD(FOUR_BIT & LINES_5X7);         //Iniciamos LCD
   comandXLCD(0x06);                  //Nos aseguramos incremento de dirección, display fijo
   comandXLCD(0x0C);
   OpenUSART(USART_TX_INT_OFF & USART_RX_INT_ON & USART_ASYNCH_MODE & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH,25); //9600,8,N,1
   // Modificamos para utilizar funcion del usuario, o sea escribir en un LCD.
   stdout =_H_USER;
   // Convertimos a string variable.
   printf("Var=%u",Variable);
   gotoxyXLCD(1,2);
   // Enviamos string contenido en Buffer.
   printf("%s", Buffer);
   //Modificamos para utilizar nuevamente puerto serial.
   stdout =_H_USART;
   printf("Var=%u",Variable);

   while(1){                               //Bucle infinito.
   }
}

_user_putc.c :

extern void WriteDataXLCD(char c);

void
_user_putc (char c)
{
      WriteDataXLCD(c);
}

Y tengo agregado todo lo de la carpeta XLCD, _user_putc.c, main.c y xlcd.h.

Desconectado AV9

  • PIC10
  • *
  • Mensajes: 43
Re: XLCD - PORTD - 18F4550
« Respuesta #35 en: 16 de Enero de 2011, 20:37:37 »
El error que me da es este:

C:\Test\main.c:56:Error: syntax error

en la linea del printf.

Desconectado gary_servin

  • PIC12
  • **
  • Mensajes: 65
Re: XLCD - PORTD - 18F4550
« Respuesta #36 en: 16 de Enero de 2011, 20:44:53 »
char Buffer[12]={"2 linea...};

Te falta cerrar las comillas!!  ;-)

char Buffer[12]={"2 linea..."};

Saludos!

Desconectado AV9

  • PIC10
  • *
  • Mensajes: 43
Re: XLCD - PORTD - 18F4550
« Respuesta #37 en: 16 de Enero de 2011, 20:59:38 »
TOMAAAA!!!! POR FIN!!!!!!!!  UEUEUEUEUE!!!!!

MIL GRACIAS!!! JAJAJAJAJA

Me ha dado un error como siempre en putrxlcd.c, lo he desagregado y ya va!!!

Otra cosa, en el futuro quiero usar el puerto serie para realizar una comunicación con otros sistemas, ¿estas configuraciones del USART me afectarán?

¿lo de "stdout=_H_USART" hay que ponerlo siempre antes de cada printf ?

Gracias por la ayuda tio llevaba varios dias detrás de esto!

Desconectado AV9

  • PIC10
  • *
  • Mensajes: 43
Re: XLCD - PORTD - 18F4550
« Respuesta #38 en: 16 de Enero de 2011, 21:02:59 »
AHHH y una última cosilla...¿ cómo hago para borrar el display entero ?. Yo estoy acostumbrado al CCS y había una función para borrar, ¿aquí también?

Gracias.

Desconectado gary_servin

  • PIC12
  • **
  • Mensajes: 65
Re: XLCD - PORTD - 18F4550
« Respuesta #39 en: 16 de Enero de 2011, 21:09:03 »
TOMAAAA!!!! POR FIN!!!!!!!!  UEUEUEUEUE!!!!!

MIL GRACIAS!!! JAJAJAJAJA

Me ha dado un error como siempre en putrxlcd.c, lo he desagregado y ya va!!!

Otra cosa, en el futuro quiero usar el puerto serie para realizar una comunicación con otros sistemas, ¿estas configuraciones del USART me afectarán?

¿lo de "stdout=_H_USART" hay que ponerlo siempre antes de cada printf ?

Gracias por la ayuda tio llevaba varios dias detrás de esto!

Excelente! que bueno que ya haya funcionado!  :-/ :-/ :-/

Citar
¿lo de "stdout=_H_USART" hay que ponerlo siempre antes de cada printf ?

En el caso que lo vayas a utilizar tanto para el LCD como para el USART en un mismo proyecto, si, o por lo menos cada vez que desees cambiar de salida estandar.

Para borrar el LCD deben enviar un comando al mismo, seria con cualquiera de estas 2 funciones:
Código: [Seleccionar]
comandXLCD(0x01);
WriteCmdXLCD(0x01);

Saludos!

Desconectado AV9

  • PIC10
  • *
  • Mensajes: 43
Re: XLCD - PORTD - 18F4550
« Respuesta #40 en: 16 de Enero de 2011, 21:11:10 »
Bueno pues ya quedó todo claro, muchas gracias por la ayuda y hasta pronto!!!    ;-) ;-) ;-) ;-)

Desconectado AV9

  • PIC10
  • *
  • Mensajes: 43
Re: XLCD - PORTD - 18F4550
« Respuesta #41 en: 17 de Enero de 2011, 14:10:07 »
Hola a todos!

Me ha surgido una nueva duda...¿es posible imprimir flotantes con el printf que aparece en el manual de C18 que colgó Suky?. He leído que no, pero pensé que igual hay alguna modificación nueva para hacerlo.

Si no, ¿me pueden indicar alguna librería que sí lo permita?

Grasias!

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: XLCD - PORTD - 18F4550
« Respuesta #42 en: 17 de Enero de 2011, 14:17:06 »
No, no se puede. En el foro han dejado una rutina, hay que utilizar el buscador  ;-)


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado AV9

  • PIC10
  • *
  • Mensajes: 43
Re: XLCD - PORTD - 18F4550
« Respuesta #43 en: 17 de Enero de 2011, 14:18:10 »
ok, gracias.

Desconectado raquena

  • PIC12
  • **
  • Mensajes: 56
Re: XLCD - PORTD - 18F4550
« Respuesta #44 en: 28 de Agosto de 2012, 18:13:13 »
Hola, estoy teniendo algunos problemillas yo también con la libreria XLCD aunque creo que también tengo algunos problemas con la versión del compilador.

Si compilo el código con la versión 3.00 del C18 me da este error:

Error - unknown switch: -z__MPLAB_BUILD=1
make[2]: *** [dist/default/production/XLCD_D_300.X.production.hex] Error 1
make[1]: *** [.build-conf] Error 2
Errors    : 1
make: *** [.build-impl] Error 2

Si lo compilo con la última versión del compilador full bajada de Microchip, compila bien, pero al simular en PROTEUS me da un problema de algo así como
TBLDTR

Hace un par de semanas hice varios programas para el LCD y iba todo perfecto, no entiendo donde está el problema.


 

anything