Hallo Leute,
ich habe zwei Arrays global definiert.
1 | GlobalDefinitions.h
|
2 |
|
3 | #ifndef GLOBAL_DEFS_H
|
4 | #define GLOBAL_DEFS_H
|
5 |
|
6 | // if EXTERN is not definied, make just declaration of global variables
|
7 | #ifndef EXTERN
|
8 | #define EXTERN extern
|
9 | #endif
|
10 |
|
11 | #pragma udata bigdata
|
12 | EXTERN unsigned char LokVsollListe[200];
|
13 | EXTERN unsigned char LokVistListe[20];
|
14 | #pragma udata
|
15 |
|
16 |
|
17 | #endif
|
Damit die Arrays in die sections passen habe ich die Linkerdatei
angepasst (siehe Anhang)
1 | Main.c
|
2 |
|
3 | #define EXTERN
|
4 | #include "GlobalDefinitions.h"
|
5 |
|
6 | #pragma udata bigdata
|
7 | unsigned char LokVsollListe[200];
|
8 | unsigned char LokVistListe[20];
|
9 | #pragma udata
|
10 |
|
11 | void main() {
|
12 |
|
13 |
|
14 | }
|
In der MainFunktion mache ich im Moment nichts anderes, als
1 | LokVistListe[0] = 54;
|
2 | LokVistListe[1] = 55;
|
3 | LokVistListe[2] = 56;
|
4 | LokVistListe[3] = 57;
|
5 | LokVistListe[4] = 58;
|
6 | LokVistListe[5] = 59;
|
7 |
|
8 | // Delay1ms(1);
|
9 |
|
10 | LokVsollListe[0] = 54;
|
11 | LokVsollListe[1] = 55;
|
12 | LokVsollListe[2] = 56;
|
13 | LokVsollListe[3] = 57;
|
14 | LokVsollListe[4] = 58;
|
15 | LokVsollListe[5] = 59;
|
16 |
|
17 | //breakpoint for debugger
|
Wenn ich das Delay drin lasse und compiliere und danach debugge stehen
in beiden Arrays die entsprechenden Werte drin. Wenn ich das Delay raus
nehme und dann nochmal compiliere+debugge stehen nur noch in
LokVistListe die Werte drin.
Zielhardware ist ein PIC18F4685. Debugger ist der ICD2.