Xmega AVR AddressOperator nur für 16 Bit?

Gast #3686655
Lesenswert?

Hallo zusammen,

kann es sein, dass das Kaufmanns UND zur Ermittlung von Adressen nur 16 
Bit Werte liefern kann? Gibt es eine Möglichkeit, dass zu erweitern? Ich 
habe da gaaanz wage etwas mit HIGH und LOW in Erinnerung, was sich nicht 
auf die letzten 6 Register X,Y,Z bezog. Mir fallen keine passenden 
Keywörter zum suchen ein...

viele Grüße!
Gast #3687387
Lesenswert?

aus der pgmspace.h guckst du (also ich) hier:

#define pgm_get_far_address(var)                          \
({                                                    \
  uint_farptr_t tmp;                                \
                                                      \
  _asm_ __volatile__(                             \
                                                      \
      "ldi  %A0, lo8(%1)"           "\n\t"    \
      "ldi  %B0, hi8(%1)"           "\n\t"    \
      "ldi  %C0, hh8(%1)"           "\n\t"    \
      "clr  %D0"                    "\n\t"    \
    :                                             \
      "=d" (tmp)                                \
    :                                             \
      "p"  (&(var))                             \
  );                                                \
  tmp;                                              \
})

Da gabs schon sowas. Nur wenn ich es verwende, kann ich über den 
Debugger sehen, dass der Flash leer ist.
Gast #3687661
Lesenswert?

Das die Operation
#define pgm_get_far_address(var)
nicht funktioniert hat, hatte was mit dem Optimierungsgrad zu tun. Den 
hatte ich mal auf -O3 umgestellt, weil ich auf -Os im Debugger bei 
Funktionszeigerübergaben beobachten konnte.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren