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

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: XLCD - PORTD - 18F4550
« Respuesta #15 en: 16 de Enero de 2011, 10:35:56 »
Pusiste extern?
No contesto mensajes privados, las consultas en el foro

Desconectado AV9

  • PIC10
  • *
  • Mensajes: 43
Re: XLCD - PORTD - 18F4550
« Respuesta #16 en: 16 de Enero de 2011, 12:51:38 »
Sip, en "_user_putc.c" puse lo siguiente:

extern putcXLCD(unsigned char c);
{
               putcXLCD(c);
{

Saludos.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: XLCD - PORTD - 18F4550
« Respuesta #17 en: 16 de Enero de 2011, 12:53:42 »
Sip, en "_user_putc.c" puse lo siguiente:

extern putcXLCD(unsigned char c);
{
               putcXLCD(c);
{

Saludos.

No es correcto, revisa de nuevo el ejemplo.


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

Desconectado AV9

  • PIC10
  • *
  • Mensajes: 43
Re: XLCD - PORTD - 18F4550
« Respuesta #18 en: 16 de Enero de 2011, 12:56:23 »
Lo siento me equivoqué pegando. Lo que tengo es esto:

extern putcXLCD(unsigned char c);

void
_user_putc  (unsigned char c)
{
               putcXLCD(c);
{

Desconectado AV9

  • PIC10
  • *
  • Mensajes: 43
Re: XLCD - PORTD - 18F4550
« Respuesta #19 en: 16 de Enero de 2011, 15:57:20 »
Alguna idea de donde puede venir el error?

Gracias.

Desconectado gary_servin

  • PIC12
  • **
  • Mensajes: 65
Re: XLCD - PORTD - 18F4550
« Respuesta #20 en: 16 de Enero de 2011, 16:05:40 »
En tu codigo has cambiado la salida estandar mediante stdout = _H_USER; ??

Saludos!

Desconectado AV9

  • PIC10
  • *
  • Mensajes: 43
Re: XLCD - PORTD - 18F4550
« Respuesta #21 en: 16 de Enero de 2011, 18:19:57 »
Este es el código del 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

unsigned char var=125;


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){

   stdout =_H_USER;
   OpenXLCD(FOUR_BIT & LINES_5X7);         //Iniciamos LCD
   comandXLCD(0x06);                  //Nos aseguramos incremento de dirección, display fijo
   comandXLCD(0x0C);
   
   gotoxyXLCD(5,1);
   printf("Var= %u", var);
   
   while(1){                               //Bucle infinito.
   }
}

Debo de decir que no tengo incluida la librería putrsXLCD porque si no me da el siguiente error al compilar:

C:\MCC18\src\pmc_common\XLCD\lcd_all.c:232:Error [1109] type mismatch in redeclaration of 'putrsXLCD'

Además tengo el siguiente warning:

C:\Test\main.c:54:Warning [2066] type qualifier mismatch in assignment  -------> En esta linea tengo:    printf("Var= %u", var);


« Última modificación: 16 de Enero de 2011, 18:25:22 por AV9 »

Desconectado gary_servin

  • PIC12
  • **
  • Mensajes: 65
Re: XLCD - PORTD - 18F4550
« Respuesta #22 en: 16 de Enero de 2011, 19:35:19 »
prueba con extern void putcXLCD(unsigned char c);

Saludos!

Desconectado AV9

  • PIC10
  • *
  • Mensajes: 43
Re: XLCD - PORTD - 18F4550
« Respuesta #23 en: 16 de Enero de 2011, 19:39:10 »
¿Pero eso en sustitucion de la funcion: void putrsXLCD(const rom char *buffer) situada en la librería putrsXLCD ??

Desconectado gary_servin

  • PIC12
  • **
  • Mensajes: 65
Re: XLCD - PORTD - 18F4550
« Respuesta #24 en: 16 de Enero de 2011, 19:43:12 »
Disculpa por no especificar!

La modificación que te dije es en el archivo _user_putc.c.

Cual es el error que te da ahora al compilar?

Desconectado AV9

  • PIC10
  • *
  • Mensajes: 43
Re: XLCD - PORTD - 18F4550
« Respuesta #25 en: 16 de Enero de 2011, 19:48:07 »
Voy a hacer eso que me dices pero antes un dato curioso.

No escribo la linea:

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

No da error, pero si el warning que comente antes: "type qualifier mismatch in assignment", y el LCD no va.

Sin embargo si escribo lo del Buffer, me da un error me da un error sintáctico en la funcion: printf("Var= %u, var);

La clave debe estar ahí xq el LCD sí que va cuando no uso printf, pero claro lo que quiero es imprimir variables y con los put no puedo...

Te da eso alguna pista?

Desconectado gary_servin

  • PIC12
  • **
  • Mensajes: 65
Re: XLCD - PORTD - 18F4550
« Respuesta #26 en: 16 de Enero de 2011, 19:52:36 »
y cuando usas printf no saca muestra nada en el LCD??

Desconectado AV9

  • PIC10
  • *
  • Mensajes: 43
Re: XLCD - PORTD - 18F4550
« Respuesta #27 en: 16 de Enero de 2011, 19:54:19 »
No, se queda en blanco y me da un warning en esa linea siempre que no ponga la declaración del Buffer. Si lo pongo directamente me da un error sintáctico en esa misma linea.

Estoy viendo una cosa que no he puesto y esta en el manual....son las funciones OpenUSART. ¿Estas hay que ponerlas? como pensé que esto es para el puerto serie no tendría nada que ver....

Voy a probar para tenerlo exactamente igual que en el manual.

« Última modificación: 16 de Enero de 2011, 19:56:43 por AV9 »

Desconectado AV9

  • PIC10
  • *
  • Mensajes: 43
Re: XLCD - PORTD - 18F4550
« Respuesta #28 en: 16 de Enero de 2011, 20:11:24 »
Nada....lo tengo todo exactamente igual que en el manual y me dice error sintáctico en:

printf("Var= %u", var);


Desconectado gary_servin

  • PIC12
  • **
  • Mensajes: 65
Re: XLCD - PORTD - 18F4550
« Respuesta #29 en: 16 de Enero de 2011, 20:12:52 »
La USART no tiene importancia ahora mismo, asi que no hace falta que uses la funcion OpenUSART().

Has lo siguiente, en el archivo _user_putc.c, usa esto:

Código: [Seleccionar]
extern void WriteDataXLCD(char);
void
_user_putc (char c)
{
WriteDataXLCD(c);
}

A mi me acaba de funcionar haciendo eso! Y el error sintactico lo puedes obviar!

Saludos!

Edito: Y no olvides agregar ademas el archivo _user_putc.c al proyecto!
« Última modificación: 16 de Enero de 2011, 20:16:32 por gary_servin »


 

anything