TODOPIC

Microcontroladores PIC => dsPIC => Mensaje iniciado por: Suky en 18 de Enero de 2010, 18:52:32

Título: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: Suky en 18 de Enero de 2010, 18:52:32
Librería para manejo LCD compatible con Hitachi 44780. Dispone de la posibilidad de trabajar en modo de 4-bits con R/W siempre y cuando se seleccionen pines tolerables a 5V para dispositivos de 3.3V o sin R/W. También implementa el manejo del LCD mediante 3 pines y un registro de desplazamiento (4094, 74164, ect) todos estos modos se selecciona con 2 definiciones (USE_RW y USE_3PINES).
Tiene implementada las siguientes funciones:
•   Open_LCD(Tipo)
       o   Tipo = LINEA_5X7,LINEA_5X10 o LINEAS_5X7
•   BusyLCD();
•   WriteCmdLCD(cmd)
•   putcLCD(data)  .Con reconocimiento de caracteres especiales ‘\f’,’\n’
•   putsLCD(*data)
•   GotoxyLCD(x,y)

Ejemplo:
Modo 4 bits con R/W:
(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=29138.0;attach=11028)
Modo 3 pines y registro de desplazamiento:
(http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=29138.0;attach=11030)

Modificación de funciones de bajo nivel de la librería stdio.h para re-direccionar salida de datos de printf.
Podemos utilizar la función printf para formatear datos y enviar por puerto UART, SPI, CAN, I2C (Caso especial) y LCD entre otros ejemplos. Una forma fácil que encontré fue la siguiente:
 
Agregar una variable externa a la función write.c (…\Microchip\MPLAB C30\src\pic30) __OUT_PER que seleccionará que periférico utilizar para la salida de datos. Esta variable la definimos en nuestro archivo principal y allí controlaremos su valor.
En el archivo write.c solo hacemos un switch para seleccionar los periféricos de salida de datos manteniendo la original sin hacer cambios mayores:

Código: C
  1. extern int __OUT_PER;
  2. switch(__OUT_PER){
  3.                         case 0: // UART
  4.                                 while ((ustatus->TRMT) ==0);
  5.                                         *txreg = *(char*)buffer++;
  6.                         break;
  7.                         case 1: // LCD
  8.                                 WriteDataLCD(*(char*)buffer++);
  9.                         break;
  10.                         case 2: // SPI
  11.                         break;
  12.                         case 3: // CAN
  13.                         break;
  14.                 }

También debemos agregar la definición de la función externa utilizada, por ejemplo para el caso del LCD:
Código: C
  1. extern void WriteDataLCD(char data);
Y no debemos olvidarnos de agregar el archivo write.c al proyecto para que sea re-compilado y efectivizar los cambios.

Quedando la librería con la modificación para usar printf en el envío de datos al LCD:

Código: C
  1. #include <p24fj64ga002.h>
  2. /* ** *********************************************************************************** ** */
  3. _CONFIG2(IESO_OFF & WUTSEL_LEG & FNOSC_PRI & FCKSM_CSDCMD & OSCIOFNC_OFF & POSCMOD_HS);
  4. _CONFIG1(JTAGEN_OFF & BKBUG_OFF & FWDTEN_OFF);
  5. /* ** *********************************************************************************** ** */
  6. //#define FCY 10000000UL
  7. #include "LCD_C30.h"
  8. #include <stdio.h>
  9.  
  10. #define LCD_rev 1.0
  11.  
  12. int __OUT_PER=1;
  13. /* ** *********************************************************************************** ** */
  14. main(void){
  15.  
  16.         OpenLCD(LINEAS_5X7);
  17.  
  18.         printf("Probando LCD\n%C30        v:%1.1f",LCD_rev);
  19.  
  20.         while(1){}
  21. }


Saludos!
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: Nocturno en 18 de Enero de 2010, 19:09:27
Extraordinario. Muchas gracias, Suky.
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: Cryn en 13 de Junio de 2010, 12:48:36
Ahora que la veo la usaré, muchas gracias por compartirlo suky :-/ :-/ :-/
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: Miquel_S en 13 de Junio de 2010, 17:54:27
Excelente aporte Suky, francamente contigo alucino.

Miquel_S
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: jukinch en 13 de Junio de 2010, 19:56:38
Grande Suky!!!  :-/ y gracias como siempre por compartir. ;-)
          Jukinch
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: black_flowers en 14 de Junio de 2010, 05:29:19
me da errores con las funciones delay. De hecho no están definidas en ningún sitio, sólo se incluye el fichero libpic30.h que contiene la declaración pero no la definición de la función delay. ¿a que se pueden deber estos errores?

..\..\..\..\Fuentes\dspic30f4011\cad\obj\LCD_C30.o(.libperi+0x2): In function `BusyLCD':
D:\PIC\Fuentes\dspic30f4011\cad\LCD_C30.c:40: undefined reference to `__delay_ms'
..\..\..\..\Fuentes\dspic30f4011\cad\obj\LCD_C30.o(.libperi+0x2a): In function `WriteCmdLCD':
D:\PIC\Fuentes\dspic30f4011\cad\LCD_C30.c:75: undefined reference to `__delay_us'
..\..\..\..\Fuentes\dspic30f4011\cad\obj\LCD_C30.o(.libperi+0x3a):D:\PIC\Fuentes\dspic30f4011\cad\LCD_C30.c:81: undefined reference to `__delay_us'
..\..\..\..\Fuentes\dspic30f4011\cad\obj\LCD_C30.o(.libperi+0x54):D:\PIC\Fuentes\dspic30f4011\cad\LCD_C30.c:94: undefined reference to `__delay_us'
..\..\..\..\Fuentes\dspic30f4011\cad\obj\LCD_C30.o(.libperi+0x64):D:\PIC\Fuentes\dspic30f4011\cad\LCD_C30.c:100: undefined reference to `__delay_us'
..\..\..\..\Fuentes\dspic30f4011\cad\obj\LCD_C30.o(.libperi+0x76): In function `OpenLCD':
D:\PIC\Fuentes\dspic30f4011\cad\LCD_C30.c:110: undefined reference to `__delay_ms'
..\..\..\..\Fuentes\dspic30f4011\cad\obj\LCD_C30.o(.libperi+0x8c):D:\PIC\Fuentes\dspic30f4011\cad\LCD_C30.c:145: undefined reference to `__delay_us'
..\..\..\..\Fuentes\dspic30f4011\cad\obj\LCD_C30.o(.libperi+0xac):D:\PIC\Fuentes\dspic30f4011\cad\LCD_C30.c:159: undefined reference to `__delay_us'
..\..\..\..\Fuentes\dspic30f4011\cad\obj\LCD_C30.o(.libperi+0xbc):D:\PIC\Fuentes\dspic30f4011\cad\LCD_C30.c:165: undefined reference to `__delay_ms'
..\..\..\..\Fuentes\dspic30f4011\cad\obj\LCD_C30.o(.libperi+0xc2):D:\PIC\Fuentes\dspic30f4011\cad\LCD_C30.c:167: undefined reference to `__delay_ms'
..\..\..\..\Fuentes\dspic30f4011\cad\obj\LCD_C30.o(.libperi+0xe0):D:\PIC\Fuentes\dspic30f4011\cad\LCD_C30.c:177: undefined reference to `__delay_us'
..\..\..\..\Fuentes\dspic30f4011\cad\obj\LCD_C30.o(.libperi+0xee):D:\PIC\Fuentes\dspic30f4011\cad\LCD_C30.c:182: undefined reference to `__delay_us'
..\..\..\..\Fuentes\dspic30f4011\cad\obj\LCD_C30.o(.libperi+0x148): In function `WriteDataLCD':
D:\PIC\Fuentes\dspic30f4011\cad\LCD_C30.c:230: undefined reference to `__delay_us'
..\..\..\..\Fuentes\dspic30f4011\cad\obj\LCD_C30.o(.libperi+0x158):D:\PIC\Fuentes\dspic30f4011\cad\LCD_C30.c:236: undefined reference to `__delay_us'
..\..\..\..\Fuentes\dspic30f4011\cad\obj\LCD_C30.o(.libperi+0x176):D:\PIC\Fuentes\dspic30f4011\cad\LCD_C30.c:250: undefined reference to `__delay_us'
..\..\..\..\Fuentes\dspic30f4011\cad\obj\LCD_C30.o(.libperi+0x186):D:\PIC\Fuentes\dspic30f4011\cad\LCD_C30.c:256: more undefined references to `__delay_us'
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: Suky en 14 de Junio de 2010, 12:41:19
Leé el final de la siguiente respuesta (http://www.ucontrol.com.ar/forosmf/tutoriales-guias-y-cursos-en-ucontrol/pic24-y-c30-un-mundo-de-diversiones!-d/msg21867/#msg21867), seguramente se debe a eso. Tambien puede ser que los archivos fuente de la libreria están comprimidos, busca un comprimido con libpic30 o algo así.


Saludos!
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: irukza en 17 de Junio de 2010, 20:54:35
Que bueno, dificil creer que el compilador no traiga este tipo de librerias!  :5]
Gracias por compartir!!!
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: cerebro en 05 de Julio de 2010, 11:50:40
Hola suky estaba probando tu librería pero tengo los mismos inconvenientes que black_flower, me llama la atención que al utilizar los delays en el .c principal no generan errores pero si al estar utilizados en las librería  :(. Nos faltara algún seteo extra del compilador o algo más? 
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: cerebro en 05 de Julio de 2010, 15:07:27
fiuuu ya esta solucionado  :).... tenía un despiole de direcciones de las librerías, .h y demás cosas. No me quedo otra que hacer el proyecto al estilo "ejemplo de microchip" cada cosita en una carpetita y todo bien organizado  :?
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: cerebro en 21 de Julio de 2010, 17:30:15
Tengo otra consulta.... cuando muestro más de un dato por el LCD me salen algo así:   259 |||259 |||310 , esas ||| no se de donde salen :shock:. Al dato lo muestro uno por uno es decir printf(%u, dato0), printf(%u, dato1), printf(%u, dato2) no es por antojo es que forma parte de un bucle  :mrgreen: .

Saludos!
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: Suky en 21 de Julio de 2010, 17:55:25
Tengo otra consulta.... cuando muestro más de un dato por el LCD me salen algo así:   259 |||259 |||310 , esas ||| no se de donde salen :shock:. Al dato lo muestro uno por uno es decir printf(%u, dato0), printf(%u, dato1), printf(%u, dato2) no es por antojo es que forma parte de un bucle  :mrgreen: .

Saludos!

 :shock: Puedes hacerle un debbug para determinar de donde provienen??
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: cerebro en 22 de Julio de 2010, 15:41:56
 :( no me lo permite MPLAB  :cry:...

Código: [Seleccionar]
Found PICkit 2 - Operating System Version 2.32.0
PICkit 2 Settings: Using target power always.
PK2Error0023:  Target Vdd measured at   4.99V which is outside the programmable range of this device (  3.00V -   3.50V)
PICkit 2 Ready

Found PICkit 2 - Operating System Version 2.32.0
PK2Error0023:  Target Vdd measured at   4.99V which is outside the programmable range of this device (  3.00V -   3.50V)
PICkit 2 Ready

y no encuentro forma de obviar ese check Vdd en MPLAB...
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: Suky en 22 de Julio de 2010, 16:03:03
Y en proteus? En el hardware se hace muy lenta la tarea de hacer un debug  :?

Se me ocurre que la función printf agrega esos datos, porque la librería no hace más que enviar el dato que se le cargue.  :undecided:

Saludos!
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: cerebro en 22 de Julio de 2010, 18:34:34
Tengo un problema con proteus, yo estoy utilizando un 33fj128gp802 y proteus llega al 33fj16gp304. Con un 33FJ16GP304 según proteus funcionaría bien (aunque yo desconfío) y en un 33fj128gp802 en la realidad se siguen notando los |||.
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: Suky en 22 de Julio de 2010, 18:49:08
Tengo un problema con proteus, yo estoy utilizando un 33fj128gp802 y proteus llega al 33fj16gp304. Con un 33FJ16GP304 según proteus funcionaría bien (aunque yo desconfío) y en un 33fj128gp802 en la realidad se siguen notando los |||.

Y puedes enviar los mismos datos por puerto serie para ver si sucede lo mismo? O usar ITOA para generar el string a enviar? Según datasheet se esta enviando 0x7C, lo que equivale a "|"  :?


Saludos!
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: cerebro en 23 de Julio de 2010, 17:11:30
C30 creo que no tiene soporte para la función ITOA (un pequeño descuido de mcp) por lo menos no la encontré en la stdlib que es donde debería estar es muy probable que utilicen sprintf... no importa en realidad porque implemente las siguientes funciones para saber si todo era culpa de printf


Código: [Seleccionar]
//------------------------------------------------------------------------
// formatea un entero a un Cstring

 char *u16toa (unsigned int value, char *pBuffer, unsigned char radix)
 {
     unsigned char digit;
 
    pBuffer += 4;
    *--pBuffer = '\0';
  
     do {
        digit = value % radix;
        *--pBuffer = '0' + digit + ((digit > 9) ? 7 : 0);
    } while ((value /= radix) != 0);
  
     return (pBuffer);
 }
 
 
 char *i16toa (int number, char *pBuffer, unsigned char radix)
 {
     if (number >= 0)
         return (u16toa (number, pBuffer, radix));
     else {
        pBuffer = u16toa (-number, pBuffer, radix);
       *--pBuffer = '-';
        return (pBuffer);
    }
 }

 
//------------------------------------------------------------------------

int promedio=0;
char buffer[4];

void ProcesoADC(int * AdcBuffer)
{

promedio= (AdcBuffer[0]+AdcBuffer[1]+AdcBuffer[2]+AdcBuffer[3]) >> 2;

putsLCD(u16toa(promedio, buffer, 10));
WriteDataLCD(' ');

 

y los resultados fueron exactamente los mismos  :cry:, encima no tengo acceso a un puerto serie...
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: cerebro en 23 de Julio de 2010, 17:41:22
ya lo solucionamos!

Código: [Seleccionar]
void ProcesoADC(int * AdcBuffer)
{

promedio= (AdcBuffer[0]+AdcBuffer[1]+AdcBuffer[2]+AdcBuffer[3]) >> 2;

putsLCD(u16toa(promedio, buffer, 10));

while(BusyLCD());
WriteDataLCD(' ');
while(BusyLCD());
}

Así esta funcionando, al parecer estaba ocupado el LCD... queda ver si son necesario los 2 busyLCD o uno solo, más tarde lo estoy probando de nuevo!

Saludos!
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: javierexe22 en 26 de Agosto de 2010, 18:18:42
Hola a todos. Tengo el siguiente siguiente codigo:
Código: [Seleccionar]
#include <p33FJ32GP202.h>
#include <TimeDelay.h>
#include <LCD_C30.h>
#include <stdio.h>



//************************************************************************
_FOSCSEL(IESO_OFF & FNOSC_PRI); // Oscilador primario
_FOSC(FCKSM_CSECMD & OSCIOFNC_OFF & POSCMD_XT); // Conmutación de Clock habilitad, Fail-Safe Clock des-habilitado, OSC2 Clout, Cristal XT.
_FWDT(FWDTEN_OFF);// Watchdog des-habilitado.
_FPOR(FPWRT_PWR2);// Power-on Reset 2ms.
//****************************************************************

#define LCD_rev 1.0

int __OUT_PER=1;

main (void)
{

//********************Config PLL a 40 mips con Cristal de 4 Mhz**************
PLLFBD = 0x004E; // M=80.
CLKDIV = 0x0000; //N1=2, N2=2.

// Cambiamos clock para incorporar PLL.-
__builtin_write_OSCCONH(0b011); // Indicamos cambio a clock primario con PLL.-
__builtin_write_OSCCONL(0x01); // Iniciamos cambio.-

while(OSCCONbits.OSWEN == 1) {}; // Esperamos a que se termine el cambio de clock.

AD1PCFGL=0xFFFF; // todos los pines digitales.-
OpenLCD(LINEAS_5X7);
printf("HOLA \n C30   %f", LCD_rev);
while(1){ }
}

Pero al compilar me da un error que no tengo idea de que se trata:
Código: [Seleccionar]
Make: The target "F:\Documents and Settings\Administrador\Mis documentos\MPLAB\manejo lcd.o" is out of date.
Executing: "F:\Archivos de programa\Microchip\MPLAB C30\bin\pic30-gcc.exe" -mcpu=33FJ32GP202 -x c -c   "manejo lcd.c" -o"manejo lcd.o" -D__DEBUG -g -Wall
manejo lcd.c:3:23: error: TimeDelay.h: No such file or directory
In file included from manejo lcd.c:4:
f:/archivos de programa/microchip/mplab c30/bin/bin/../../support/peripheral_30F_24H_33F/LCD_C30.h:24:2: warning: #warning "Se ha definido valor de FCY para realización de demoras!!!"
manejo lcd.c:21: warning: return type defaults to 'int'
Halting build on first failure as requested.
----------------------------------------------------------------------
Debug build of project `F:\Documents and Settings\Administrador\Mis documentos\MPLAB\manejo lcd.mcp' failed.
Language tool versions: pic30-as.exe v3.12, pic30-gcc.exe v3.12, pic30-ld.exe v3.12, pic30-ar.exe v3.12
Preprocessor symbol `__DEBUG' is defined.
Thu Aug 26 18:03:33 2010

Si alguien tiene idea de lo que puede estar suciendo, soy todo oidos y ojos! Saludos.
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: Suky en 26 de Agosto de 2010, 18:47:49
Tu estás incluyendo la librería TimeDelay.h, es la que no encuentra, y por eso el error.


Saludos!
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: javierexe22 en 26 de Agosto de 2010, 22:49:14
Tu estás incluyendo la librería TimeDelay.h, es la que no encuentra, y por eso el error.


Saludos!
Si, pero me parece raro porque le asocie la librería al proyecto. No basta con eso? En la figura que adjunto en el comentario anterior esta incluida dentro del proyecto. O eso es lo que yo creo, debería hacer algo mas? Disculpen pero recién me estoy iniciando con el C30 y estoy medio confundido..Saludos!
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: Suky en 26 de Agosto de 2010, 22:57:36
En project/Build/project coloca la dirección de la carpeta donde se encuentra, puede que sea eso.


Saludos!
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: javierexe22 en 03 de Septiembre de 2010, 16:39:52
En project/Build/project coloca la dirección de la carpeta donde se encuentra, puede que sea eso.


Saludos!
Gracias lo solucione colocando #include "TimeDealy.h"

Saludos!
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: Suky en 03 de Septiembre de 2010, 20:13:33
En project/Build/project coloca la dirección de la carpeta donde se encuentra, puede que sea eso.


Saludos!
Gracias lo solucione colocando #include "TimeDealy.h"

Saludos!

Adonde? Si ya estaba eso en el main?  :? Aaa! los archivos están en la carpeta del proyecto? Así, si!  :D


Saludos!
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: ajcev en 15 de Septiembre de 2010, 18:43:18
hola...........estoy tratando de probar el programa del autor (suky) practicamente el mismo....(visualizacion con lcd y las librerias lcd_c30.c el que explica en PIC24 y C30 un mundo de diversiones) pero me sale unos errores los siguientes:

----------------------------------------------------------------------
Debug build of project `C:\printf\LCD.mcp' started.
Preprocessor symbol `__DEBUG' is defined.
Wed Sep 15 16:13:16 2010
----------------------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Deleted file "C:\printf\lcd.o".
Clean: Deleted file "C:\printf\LCD_C30.o".
Clean: Done.
Executing: "C:\Archivos de programa\Microchip\MPLAB C30\bin\pic30-gcc.exe" -mcpu=30F2010 -x c -c   "lcd.c" -o"lcd.o" -D__DEBUG -g -Wall
lcd.c: In function `main':
lcd.c:25: warning: wint_t format, double arg (arg 2)
lcd.c:25: warning: too few arguments for format
lcd.c:28:2: warning: no newline at end of file
Executing: "C:\Archivos de programa\Microchip\MPLAB C30\bin\pic30-gcc.exe" -mcpu=30F2010 -x c -c   "LCD_C30.c" -o"LCD_C30.o" -D__DEBUG -g -Wall
LCD_C30.c:285:2: warning: no newline at end of file
Executing: "C:\Archivos de programa\Microchip\MPLAB C30\bin\pic30-gcc.exe" -mcpu=30F2010 -x c -c   "write.c" -o"write.o" -D__DEBUG -g -Wall
Executing: "C:\Archivos de programa\Microchip\MPLAB C30\bin\pic30-gcc.exe" -mcpu=30F2010 "lcd.o" "LCD_C30.o" "write.o" "C:\Archivos de programa\Microchip\MPLAB C30\lib\libp30F2010-coff.a" "C:\Archivos de programa\Microchip\MPLAB C30\lib\libp30F2010-elf.a" -o"LCD.cof" -Wl,--script="..\Archivos de programa\Microchip\MPLAB C30\support\gld\p30f2010.gld",--defsym=__MPLAB_BUILD=1,--defsym=__MPLAB_DEBUG=1,-Map="LCD.map",--report-mem
C:\Archivos de programa\Microchip\MPLAB C30\bin\pic30-coff-ld.exe: Link Error: address 0x2374 of LCD.cof section .text is not within region program
C:\Archivos de programa\Microchip\MPLAB C30\bin\pic30-coff-ld.exe: Link Error: section .const [000100   -> 000121  ] overlaps section .text [000100   -> 002373  ]
C:\Archivos de programa\Microchip\MPLAB C30\bin\pic30-coff-ld.exe: Link Error: section .dinit%15 [000122   -> 00025d  ] overlaps section .text [000100   -> 002373  ]
C:\Archivos de programa\Microchip\MPLAB C30\bin\pic30-coff-ld.exe: Link Error: section .isr%16 [00025e   -> 00025f  ] overlaps section .text [000100   -> 002373  ]
C:\Archivos de programa\Microchip\MPLAB C30\bin\pic30-coff-ld.exe: Link terminated due to previous error(s).
Link step failed.
----------------------------------------------------------------------
Debug build of project `C:\printf\LCD.mcp' failed.
Preprocessor symbol `__DEBUG' is defined.
Wed Sep 15 16:13:17 2010
----------------------------------------------------------------------
BUILD FAILED 

Por favor si me pueden decir que esta mal....................
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: ajcev en 15 de Septiembre de 2010, 19:07:52
Hola estoy probando este mismo programa el de suky pero tengo estos errores al compilar, el progrma principal es el siguiente:
#include "p30f2010.h"
#define FCY 5000000UL
//#define _delay_ms(d) __delay32( (unsigned long long) (d)*(FCY)/1000)
//#define _delay_us(d) __delay32( (unsigned long long) (d)*(FCY)/1000000)
#include <libpic30.h>
#include <stdio.h>
#include "LCD_C30.h"
#define LCD_rev 1.0


_FWDT(WDT_OFF);            // Watchdog des-habilitado
_FOSC(CSW_FSCM_OFF & HS);
_FGS(CODE_PROT_OFF);       //Disable Code Protection


//#define FCY 10000000UL
   

   
int __OUT_PER=1;
 
int main(void){
 
     OpenLCD(LINEAS_5X7);
     printf("Probando LCD\n%C30        v:%1.1f",LCD_rev);
while(1){}

}



Por favor si saben que esta mal ayuda.......... a suky en el archivo write.c tenia el archivo 30sim.h pero ya lo busque y no lo tengo soloun 30sim.gld no se si esto sea indispensable.....   
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: dex88 en 08 de Julio de 2011, 19:56:07
Hola! espero alguien pueda ayudarme, estoy tratando de hacer funcionar un simple programita para un 30F4013, para que maneje un LCD 2x16, pero no consigo hacer que compile, me tira varios errores en el archivo write.c

C:\Program Files\Microchip\MPLAB C30\src\pic30\write.c:75: error: syntax error before 'switch'
C:\Program Files\Microchip\MPLAB C30\src\pic30\write.c:78: warning: type defaults to 'int' in declaration of 'txreg'
C:\Program Files\Microchip\MPLAB C30\src\pic30\write.c:78: error: 'buffer' undeclared here (not in a function)
C:\Program Files\Microchip\MPLAB C30\src\pic30\write.c:78: warning: data definition has no type or storage class
C:\Program Files\Microchip\MPLAB C30\src\pic30\write.c:79: error: syntax error before 'break'

nose si sera que estoy modificando mal el archivo o que?

Muchas Gracias!
Título: Re: Flex_LCD_C30 (4-bits con o sin R/W; 3 pines más registro desplazamiento)
Publicado por: dex88 en 14 de Julio de 2011, 14:03:00
hola! YA SOLUCIONE UNA PARTE Y PUEDO COMPILAR EL PROGRAMA, PERO NO LOGRO ESCRIBIR NADA EN EL LCD...ALGUIEN PODRIA PASARME LA LIBRERIA WRITE.C PARA VER COMO DEBE QUEDAR?. MUCHAS GRACIAS