TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Nirgelep en 27 de Mayo de 2010, 07:44:30
-
Hola:
Estoy haciendo pruebas con el compilador de Hi-Tech y un PIC18f26j50, intentando hacer uso del código que proporciona para el USART. Tengo el problema de que a la hora de compilar el proyecto me aparece:
"Error [499] ; 0. undefined symbol:
_Open1USART(26j50_HT.obj)
-
El código simplificado es el siguiente:
#include <htc.h>
//#include <u1open.c>
void main(void)
{
Open1USART( USART_TX_INT_OFF &
USART_RX_INT_OFF &
USART_ASYNCH_MODE &
USART_EIGHT_BIT &
USART_CONT_RX,
25);
}
En el MPLAB, Project, Build Options, tengo marcada la opción de Link in Peripheral Library en la pestaña Linker, y en la pestaña Directories añadida la ruta C:\Archivos de programa\HI-TECH Software\PICC-18\PRO\9.63\sources\plib\usart.
Si descomento la segunda linea del código
//#include <u1open.c>
entonces desaparece el error. Mi pregunta es. ¿Para cada función que use tengo que ir cargando el fichero donde se encuentra definida? ¿Hay alguna forma de no tener que estar incluyendo los ficheros en el código?... Aunque creo que la mejor pregunta es... ¿Lo estoy haciendo bien?
Un saludo y gracias.
-
Nirgelep,
Convienen incluir el .h que corresponde al periferico, es decir en tu caso el usart.h, ese fichero ya tiene definidas todas la funciones
saludos
-
Nirgelep,
Convienen incluir el .h que corresponde al periferico, es decir en tu caso el usart.h, ese fichero ya tiene definidas todas la funciones
saludos
Si, también lo intente, pero con los mismos resultados. He probado el ejemplo que aparece en "HI-TECH PIC18 Peripheral Libraries" en la página 76:
#include <htc.h>
#include <peripheral/usart.h>
#include <u1open.c>
void main(void)
{
// configure USART
Open1USART( USART_TX_INT_OFF &
USART_RX_INT_OFF &
USART_ASYNCH_MODE &
USART_EIGHT_BIT &
USART_CONT_RX &
USART_BRGH_HIGH,
25 );
while(1)
{
while( ! PORTAbits.RA0 ); //wait for RA0 high
Write1USART( PORTA ); //write value of PORTD
if(PORTA == 0x80) // check for termination
break; // value
}
Close1USART();
}
Para que no de error en la compilación y enlace es como si tuviese que añadir además del usart.h, los ficheros de código donde están definido el código de las funciones, o al menos eso me pasa con la función Open1USART.
Tengo que tener algún fallo en las librerias, o en el path, o las opciónes del MPLAB, pero no creo que tenga que estar buscando e incluyendo los ficheros .c donde están las implementadas las funciones.
Un saludo y gracias.
-
lo que generalmente hago es copiar el usart.h de Hitech al directorio del proyecto, y lo incluis como
#include "usart.h" asi no dependes de las rutas de acceso al compilador y para mayor seguridad agregalo tambien en los Header del proyecto.
si esto no funciona subi un .rar con todo directorio de proyecto y vemos que se puede hacer
saludos
-
lo que generalmente hago es copiar el usart.h de Hitech al directorio del proyecto, y lo incluis como
#include "usart.h" asi no dependes de las rutas de acceso al compilador y para mayor seguridad agregalo tambien en los Header del proyecto.
si esto no funciona subi un .rar con todo directorio de proyecto y vemos que se puede hacer
saludos
También lo he intentado pero sigue igual. Adjunto el proyecto, 26j50_HT.mcp.
Un saludo.
-
ya lo baje, pero en esta PC no tengo instalado el Hi tech, en cuanto pueda lo veo
saludos