Forum: Mikrocontroller und Digitale Elektronik Programmspeicher löschen


von Samy (Gast)


Lesenswert?

Guten Abend

Bin gerade dabei, einen Bootloader (Atmega 8) zu entwickeln.
In einem AVR-Buch habe einen Code zum löschen des Programmspeichers
entdekt.

NextPage:
ldi temp, 0x03       ;
out spmcr, temp      ;Programmspeicher/Löschmodus aktivieren
spm                  ;Page löschen starten

WaitSpm:
in temp, spmcr       ;
sbrc temp, spmen     ;warten bis Sreibaktion.....
rjmp WaitSpm         ;beendet ist
adiw zl,32           ;nächste Seiteadresse (Adresse=Adresse+32)....
rjmp NextPage        ;löschen next Page

Tja dieser Code löscht zwar den Speicher, aber jede Page 2x (das 2x
wird Page nicht kommplett gelöscht)!!
Wenn ich 64 zu zl addiere (geht mit adiw natürlich nicht) wird jede
Seite nur 1x gelöscht!

Der Atmega 8 hat zwar pro Page 32Words also 64Bytes, ricchtig??
Wie kommt der Autor des Buches dann auf +32???

Habe das ganze nur mit AVR-Studio 4 simuliert --> nicht das es am
AVR-Studio liegt.

Vielleicht bringt mal jemand etwas licht ins dunkle, thanks.

von Thorsten (Gast)


Lesenswert?

64 Byte pro Page, sehe ich auch so.

von Tobi (Gast)


Lesenswert?

Haben alle AVR's die gleiche Pagegrösse?

von Thorsten (Gast)


Lesenswert?

Nein.

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.