¿No hay nadie que me pueda echar un cable?
Voy a decir las rutas donde he añadido los archivos y que es lo que he hecho.
He intentado seguir la estructura de todos los archivos del proyecto.
Archivos añadidos:
Los archivos que estoy intentado incluir es un driver del termometro digital-termostato DS1621, éste driver consta de dos archivos uno de cabecera llamado DS1621.h donde declaro las variables y las funciones y un código fuente llamado DS1621.C donde están las funciones que manejan el dispositivo, estos dos archivos los incluyo en las carpetas TCPIP Stack correspondientes, el .h en el inlcuder y el .c en el de las librerías.
y por último el código de cabecera del protocolo i2c que trae el compilador y se llama i2c.h.
Rutas de los archivos:
Lo primero que he hecho es crear una definición en el archivo de cabecera TCPIPConfig.h , para ello he incluido esta línea:
#define DEVICE_DS1621
Luego he creado la llamada a los drivers en el fichero TCPIP.h
Lo he añadido a lo último del fichero, debajo de #if defined(WF_CS_TRIS) de ésta manera
#if defined(DEVICE_DS1621)
#include <i2c.h>
#include "TCPIP Stack/DS1621.h"
#endif
Luego en el main.c del proyecto, detro de la función InitializeBoard(); le he añadido la configuración del protocolo i2c que voy a utilizar, de esta manera
//*****************************************************************
//Configuración del i2c
//*****************************************************************
#if defined(DEVICE_DS1621)
OpenI2C(MASTER,SLEW_OFF); //Configuración de Master y velocidad a 100KHz
SSPADD = 9; //100KHz para cristal de 4MHz
#endif
También he añadido dentro de la función main(); del archivo principal, la inicialización del dispositivo y la función de configuración del mismo, ejemplo:
#if defined(DEVICE_DS1621)
init_ds1621(address, command);
config_ds1621(address, config);
#endif
En el bucle principal del main.c, bucle while(), he añadido la función que lee el dato del dispositivo DS1621 de esta manera.
#if defined(DEVICE_DS1621)
temperatura = read_temp_normal_precision(address);
#endif
A todas las funciones y driver nuevos que he añadido menos al DS1621.h y al i2c.h (ósea a DS1621.c sólo) la definición de:
#if defined(DEVICE_DS1621)
#endif
Para que si desactivo el dispositivo estas funciones no las compile el compilador.
Pues después de añadir todo esto cuando le doy a compilar el MPLAB me da un error
Error - could not find definition of symbol '__OpenI2C:1' in file 'Obj-C18-PIC18F4620_ENC28 \Main.o'.
He probado a añadirle en la cabecera del código fuente del DS1621.C los archivos de cabecera
#include "TCPIPConfig.h"
#include "TCPIP Stack/TCPIP.h"
Y otros mas, ósea que lo he cambiado de todas las maneras que se me ha ocurrido y no me va.
Cada vez que cambio estos u otras posiciones de los archivos me dan errores diferentes.
Unas veces que no esta declaradas las funciones del driver, otras que no encuentra ciertos archivos del archivo de cabecera i2c.h y así
A ver si alguien me puede orientar.
Si hacen falta más datos o que comparta todo o parte del código me lo decís y lo subo, así también podrán tener el driver que he hecho aunque no está terminado pero lo básico funciona perfectamente
Gracias