AVR: pgmspace oberhalb von 64 kB

Gast #174928
Lesenswert?
• ▲
▼
Hallo,

im gcc-Tutorial heißt es:

> Zeiger auf Werte im Flash sind ebenfalls 16 Bits "gross".
> (Die avr-libc pgmspace-Funktionen unterstützen nur die
> unteren 64kB Flash bei Controllern mit mehr als 64kB.)

Wie soll ich denn das verstehen? Mit "pgm_read_byte_far" usw. kann
ich doch den gesamten Adreßraum nutzen. Fehler im Tutorial oder
Verständnisfehler von mir?
Gast #174929
Lesenswert?
• ▲
▼
Hallo Philipp,

schau mal in das Datenblatt vom Mega128. Bei den Controllern, die mehr
als 64K Flash haben, wurde der PC erweitert. Irgendwo ist noch ein
Register, welches die 16Bits erweitert, so dass der ganze Programmspace
adressiert werden kann.

Gruß, Florian
Gast #174931
Lesenswert?
• ▲
▼
Soweit ich weiss, gibt es zwar die *_far Funktionen zum Zugriff auf
Adressen jenseits 64kB, jedoch werden "Variablen im Flash"
("Attribut" PROGMEM) vom avr-gcc nur in den den "unteren" 64kB
verwaltet.
Der Satz im Tutorial ist von mir, habe an dieser Stelle bewusst
vereinfacht, um keine Verwirrung zu verursachen (far/near/PROGMEM
etc.). Vielleicht ist die Vereinfachung doch zu heftig. Jeder kann
Ergaenzungen/Korrekturen einbringen.

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