Hallo zusammen,
mir ist da etwas aufgefallen und kann es grad nicht ganz nachvollziehen.
Ich verwende einen ATmega1284P, und den avr-gcc.
Somit wird die "iom1284p.h" eingebunden.
Die Registeradresse "UCSR0A" wird als "_SFR_MEM8(0xC0)" definiert.
Nun öffne ich die "sfr_defs.h" und schaue wie "_SFR_MEM8()" definiert
wird.
Jetzt gibt es dort die Fallunterscheidung ob es sich um ASM handelt oder
nicht:
1 | #ifdef __ASSEMBLER__
|
2 | #define _SFR_ASM_COMPAT 1
|
3 | #elif !defined(_SFR_ASM_COMPAT)
|
4 | #define _SFR_ASM_COMPAT 0
|
5 | #endif
|
Soweit so gut,
es ist ein C-Programm, somit _SFR_ASM_COMPAT = 0.
In Zeile 133 folgt:
Dies ist nicht erfüllt, da "_SFR_ASM_COMPAT" gleich 0 ist, somit sollte
er diesen Zweig überspringen,
aber genau darin ist das define für "_SFR_MEM8()".
Woher kommt es dann, wenn nicht von hier?
Was übersehe ich?