Karsten Schulz schrieb:
>[...]
> named: ADuC7060
Vorab: mit ADuC7060 habe ich bisher nichts gemacht, jedoch jüngst recht
viel mit ADuC7026. Auf den ersten Blick scheint die Funktionalität für
in-application-programming identisch, habe aber nichts alles genau
verglichen.
> Alles wunderbar, leider werde ich nicht gescheit aus den
> Examples, ich möchte schlicht ein oder zwei Bytes
> über einen Reset/Powerless hinaus abspeichern/laden.
>
> Gibt es Hinweise, welche Register dafür geeignet sind ?
Ja: Die Register, deren Bezeichnungen mit FEE beginnen. Aber das hilft
wahrscheinlich auch nicht wirklich weiter...
Vor Schreib- und Löschoperationen muss freigeschaltet werden, vgl.
Bitbeschreibung FEEMOD.
Gelöscht werden kann, wie üblich bei Flash-Speichern, nur seitenweise
(Seitengröße 512 Bytes) und damit werden alle enthaltenen Bits gesetzt.
Vorgehensweise: Eine Adresse innerhalb der Seite in FEEADR, Code für
Operation Erase-Page in FEECON, dann FEESTAT abfragen, bis busy-bit
gelöscht und schliesslich prüfen, ob im letzten gelesenen FEESTA-Wert
das command-fail-Bit gesetzt war.
Schreiben kann man halb-Wort-weise (16bit) und damit vorher beim Löschen
gesetzte Bits löschen. Schreiben eines 16-Bit Werts: Adresse in FEEADR,
Wert in FEEDAT, Code für half-word-write in FEECON, FEESTAT-Abfrage wie
beim Seitenlöschen. Es gibt auch eine schreiben-und-prüfen Operation,
kann man aber auch per "if (*(Adresse)==Sollwert)" machen.
Falls die "ein oder zwei Bytes" nur selten geändert werden, kann mann
mit einem read-modify-write Ansatz auf immer der selben Seite arbeiten,
falls nicht, muss man ein "wear-leveling" implementieren. Relativ
einfacher Ansatz dafür in einer Application Note von STMicro für STM32
(Titel "EEPROM emulation with STM32" oder so ähnlich).
Viel Erfolg.