Servus.

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

Definiert werden sie wie folgt:
rgbled.h:
Code:
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:
Code:
#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.
Code:
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:
Code:
#include "rgbled.h"
void main(void)
{
	led1pwm[0] = 1;
	led1pwm[1] = 64;
	led1pwm[2] = 64;
	led1pwm[3] = 64;

}
Code:
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...
//