PIC - Accediendo a udata a través del puntero en otro archivo

1

Así que tengo una lista de tiempos en mi udata en, digamos, clock.c . He leído que se debe acceder a udata a través de un puntero, bueno, está bien.

Por encima de defines.h

//Warning! This has to be conform the linkerscript, you can not just increase it.
#define CLOCKINGLISTLENGTH 50
#define KEYLENGTH 6

//A clocking consists out of a key, time and in/out (and status)
//All the clockings together are the "clockings" list.
//These clockings will await to be transmitted.
typedef struct
{
    unsigned isActive:1;
    unsigned needsTransmit:1;
    unsigned inOut:1;
    unsigned val1:1;
    unsigned val2:1;
    unsigned val3:1;
    unsigned val4:1;
    unsigned val5:1;
} byte;

typedef struct
{
    byte bits;
    unsigned char key[KEYLENGTH];
    unsigned char time[6];
} Clocking;

Por encima del archivo clock.c .

#include "defines.h"
#pragma udata large_udata
Clocking clocking_queue[CLOCKINGLISTLENGTH];
#pragma udata
Clocking *clockings = clocking_queue;//Access udata through pointer!

En el archivo eeprom.c .

#include "defines.h"
extern Clocking *clockings;

void writeClockingToEEPROM(char clockingIndex){
 int eepromIndex = 0;
 Write_b_eep(eepromIndex,clockings[clockingIndex].key[0]);
}

Mi pregunta es: "Cómo acceder a udata desde otro archivo a través de un puntero". Simplemente quiero usar mi clockings_queue (que debería accederse a través de * clockings pointer) en mi EEPROM.c, para poder almacenar los tiempos en EEPROM.     

pregunta Paul

1 respuesta

0

El compilador no sabe dónde está clockings en eeprom.c . No hay nada que decirle al compilador que clockings está en clock.c .

Para solucionar esto, mueva extern Clocking *clocking; de eeprom.c a defines.h . De esta manera, clock.c y eeprom.c saben que existe clockings . La declaración de clockings debe estar en el encabezado. La definición debería estar en clock.c (como está actualmente).

Aquí hay un enlace para una explicación sobre extern : enlace

    
respondido por el CurtisHx

Lea otras preguntas en las etiquetas