PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit globalen Array [gelöst]



OnkelTobi
25.11.2006, 15:04
Servus.

Ich habe vor Werte in einem Feld zuspeichernm welche dann in mehreren Units genutzt werden.

Definiert werden sie wie folgt:
rgbled.h:

static volatile uint8_t led1pwm[4]; //[On/Off/Blink, r, g, b]
static volatile uint8_t led2pwm[4];

extern void dummy(void);


Zugriff in rgbled.c:


#include "rgbled.h"

void dummy(void)
{
led1pwm[0] = 1;
led1pwm[1] = 64;
led1pwm[2] = 64;
led1pwm[3] = 64;

led2pwm[0] = 1;
led2pwm[1] = 0;
led2pwm[2] = 0;
led2pwm[3] = 255;
}
Laut Disassembler liegt das Feld led1pwm ab 0x0071 im RAM.

19: led1pwm[0] = 1;
+00000196: E091 LDI R25,0x01 Load immediate
+00000197: 93900071 STS 0x0071,R25 Store direct to data space


Wenn ich auf die selben Felder aus einer anderen unit zugreife, wird aber auf die Adressen ab 0x0065 geschrieben!?

controller.c:

#include "rgbled.h"
void main(void)
{
led1pwm[0] = 1;
led1pwm[1] = 64;
led1pwm[2] = 64;
led1pwm[3] = 64;

}


133: led1pwm[0] = 1;
+000000B6: E081 LDI R24,0x01 Load immediate
+000000B7: 93800065 STS 0x0065,R24 Store direct to data space

Hat jemand eine Idee?


/edit gelöst...
Das Static war in der Definition war zuviel...
//