OnkelTobi
25.11.2006, 16: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...
//
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...
//