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?
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.