Forum: Mikrocontroller und Digitale Elektronik AVR: pgmspace oberhalb von 64 kB


von Philipp Sªsse (Gast)


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?

von Florian Pfanner (Gast)


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

von mthomas (Gast)


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.

von Philipp Sªsse (Gast)


Lesenswert?

Eben, das RAMPZ. Und die Makros mit _far benutzen ELPM, das RAMPZ
mitbenutzt und damit ist doch die Aussage aus dem Tutorial falsch. Oder
verstehe ich es immer noch nicht?!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.