TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: robertohm en 05 de Febrero de 2010, 19:28:52
-
Hola, estoy empezando con CSS y en el tema del LCD me he quedado bloqueado.
Cuando compilo me da errores, y creo es debido a no saber configurarlo.
En la cabezera de lcd.c me dice lo que hay que hacer pero no lo entiendo.
esto es lo que dice:
CONFIGURATION ////
//// The LCD can be configured in one of two ways: a.) port access or ////
//// b.) pin access. Port access requires the entire 7 bit interface ////
//// connected to one GPIO port, and the data bits (D4:D7 of the LCD) ////
//// connected to sequential pins on the GPIO. Pin access ////
//// has no requirements, all 7 bits of the control interface can ////
//// can be connected to any GPIO using several ports. ////
//// ////
//// To use port access, #define LCD_DATA_PORT to the SFR location of ////
//// of the GPIO port that holds the interface, -AND- edit LCD_PIN_MAP ////
//// of this file to configure the pin order. If you are using a ////
//// baseline PIC (PCB), then LCD_OUTPUT_MAP and LCD_INPUT_MAP also must ////
//// be defined. ////
//// ////
//// Example of port access: ////
//// #define LCD_DATA_PORT getenv("SFR:PORTD")
El error me lo da en lcd.c en estas tres ultimas lineas:
#elif defined(__PCM__)
LCD_PIN_MAP lcd, lcdlat, lcdtris;
#byte lcd = LCD_DATA_PORT
#byte lcdlat = LCD_DATA_PORT
#byte lcdtris = LCD_DATA_PORT+0x80
error 12 : Undefined indentifier
Que debo hacer ?
GRacias
-
Por lo que parece tenes que usar justamente la línea que te muestra comentada, pero sin comentarla obviamente.
#define LCD_DATA_PORT getenv("SFR:PORTD")
Ahí están usando como ejemplo el puerto D pero en teoría se podría asignar el B o C tranquilamente. Supongo que esa definición debería estar antes del #inlcude <lcd.c>; para que entienda el valor del #define....
-
He puesto la siguiente linea antes del #include <lcd.c>
#define LCD_DATA_PORT getenv("SFR:PORTD")
cuando compilo tengo el mismo error.
pero al poner la siguiente linea, si me ha ido bien,
#define LCD_DATA_PORT getenv("SFR:PORTB")
Supongo que he cambiado el puerto D por el B.
Por lo que he leido, el driver LCD.C viene por defecto con el puerto D, y deberia de funcionar sin hacer nada, pero este no es mi caso.
Probare con el B, pero estaria bien saber como hacerlo con el D
-
¿Y que PIC estás usando? no sea cosa que estés usando un PIC sin puerto D y por ello te tire el error.
-
Menudo ERROR !!!!
Tienes toda la razón.
Empecé el programa con un 16F876,
He probado con 16F877 y compilando con puerto D, y todo ha ido bien.
Estoy siguiendo los pasos de un libro de microcontroladores el compilador C CCS y simulador proteus, tema por tema, y los inicios tienen siempre dificultad.
Mas cuando lo que siempre he hecho a sido en ensamblador con MPLAB.
Quizás sea demasiado pedir al compilador , que en la ventana de errores y warning, te dijera. (“ he que haces? PIC 16F876 y puerto D no es posible”), en ingles claro.
Gracias