Hallo,
was machst du da mit _SFR_MEM8()?
Damit werden eigentlich Register im internen Adressraum beschrieben.
Also so was wie
1 | #define PORTL _SFR_MEM8(0x42)
|
was dann auf
1 | (*(volatile uint8_t*)0x42)
|
abgebildet wird.
Somit hast du dir das gebastelt:
1 | dummy2 = pgm_read_byte(PRODSIGNATURES_TEMPSENSE0);
|
2 | => pgm_read_byte(_SFR_MEM8(0x002E))
|
3 | => pgm_read_byte(*(volatile uint8_t*)0x002E);
|
Damit liest du zuerst das Register an der Stelle 0x2E, also eben
PRODSIGNATURES_TEMPSENSE0 aus und übergibst dessen aktuellen Wert (und
eben nicht die Adresse) an die Funktion pgm_read_byte().
Was du wahrscheinlich willst dürfte sein:
1 | pgm_read_byte(&PRODSIGNATURES_TEMPSENSE0);
|
Ich hoffe ich habe dein Anliegen richtig verstanden ;-)
Mit freundlichen Grüßen,
N.G.
PS: warum muss isch jeder eigenen Datentypen definieren, anstatt die aus
<stdint.h> zu nehmen?