Hallo, im Moment hänge ich an folgenden Problem: Ich habe mir ein Header-File "global_param.h" angelegt, in dem die EEPROM-Variablen abgelegt sind. Dieses ist im Hauptprogramm includiert. In einem weiteren c-file will ich nun vom EEPROM mittels des Veriablennamens lesen. Dafür gibts dann nen neuen Header, in dem die Variablen als extern deklariert sind. Irgndwie funktioniert das aber nicht. main.c
1 | #include <avr/io.h> //pin and register definitions |
2 | #include <avr/interrupt.h> //IRQ handler |
3 | #include <util/delay_basic.h> //subroutine delay |
4 | #include <avr/eeprom.h> //R/W procedures for eeprom |
5 | #include "globals.h" |
6 | #include "global_param.h" |
7 | #include "checksum.h" |
8 | #include "temperature.h" |
global_param.h
1 | #ifndef _global_param_h_
|
2 | #define _global_param_h_
|
3 | |
4 | |
5 | //*************************************Constants EEPROM*****************************
|
6 | //32Bit serial (init valua = 0xFFFFFFFF!!!)
|
7 | unsigned char SERIAL3 EEMEM; |
8 | unsigned char SERIAL2 EEMEM; |
9 | unsigned char SERIAL1 EEMEM; |
10 | unsigned char SERIAL0 EEMEM; |
11 | //Operating parameters (FB and current limit)
|
12 | unsigned char FB_GAIN EEMEM; |
13 | unsigned char I_LIM_SET EEMEM; |
14 | unsigned char I_MAX EEMEM; |
15 | //Initialization parameters
|
16 | unsigned char INIT_MODUS EEMEM; |
17 | unsigned char TEMP_UP EEMEM; |
18 | unsigned char TEMP_DOWN EEMEM; |
19 | uint16_t V_FB_MAX EEMEM; |
20 | //Error memory (ring buffer: if memory contains 0xFFFF --> memory is clear)
|
21 | unsigned int F_MEM1 EEMEM; |
22 | unsigned int F_MEM2 EEMEM; |
23 | unsigned int F_MEM3 EEMEM; |
24 | unsigned int F_MEM4 EEMEM; |
25 | unsigned int F_MEM5 EEMEM; |
26 | unsigned int F_MEM6 EEMEM; |
27 | //16 bit firmwareversion
|
28 | unsigned char firmware_version_high EEMEM; |
29 | unsigned char firmware_version_low EEMEM; |
30 | |
31 | #endif
|
temperature.h
1 | #ifndef _temperature_h_
|
2 | #define _temperature_h_
|
3 | |
4 | extern unsigned char TEMP_UP; |
5 | extern unsigned char TEMP_DOWN; |
6 | |
7 | |
8 | |
9 | #endif
|
temperature.c
1 | #include <avr/io.h> |
2 | #include <avr/eeprom.h> |
3 | #include <avr/interrupt.h> |
4 | |
5 | //***************************************Subroutine Temperatur prüfen******************
|
6 | int CHECK_TEMP() |
7 | {cli(); |
8 | unsigned char T_max = eeprom_read_byte(&TEMP_UP); //max Temp. aus EEPROM lesen |
9 | unsigned char T_min = eeprom_read_byte(&TEMP_DOWN); //min Temp. aus EEPROM lesen |
10 | static unsigned short AD_result; |
11 | //usw.
|
12 | |
13 | |
14 | Der Compiler bemängelt immer, dass TEMP_UP und TEMP_DOWN nicht deklariert sind. |