Hallo Leute, der dsPIC33fj64gs606 hat laut Webseite eine Flash-Größe von 64 KByte. Laut Datenblatt geht der Adressbereich vom User Program Flash Memory von der Adresse 0x0200 bis 0xABFE, und da der Speicher wortweise adressiert ist, wären das 43518 Words, also ~ 87 KByte? Was habe ich hier falsch verstanden? Bzw. wurde für die Berechnung der 64 KB das Phantom Byte weggelassen, und wenn ich im Flash Daten abspeichere habe ich mehr als 64 KB zur Verfügung? Habe ich da wo einen Denkfehler? Danke für Eure Tipps, Viele Grüße Max
Das Flash hat eine Breite von 24 Bit, also 3 Byte. Teilst Du Deine 64k durch 3 und dekrementierst das Ergebnis, hast du die letzte Wortadresse im Flash. Wenn Du per PSV-Fenster oder TBLRD-Befehl aufs Flash zugreifst, hast Du immer noch ein Dummy-Byte, was aber physikalisch gar nicht existiert. fchk
Steht doch im Datenblatt unter "Programm Memory Organization":
"The program memory space is organized in word-
addressable blocks. Although it is treated as 24 bits
wide, it is more appropriate to think of each address of
the program memory as a lower and upper word, with
the upper byte of the upper word being unimplemented.
The lower word always has an even address, while the
upper word has an odd address (see Figure 4-2)."
Auf Deutsch: Der Speicher liefert auf den geraden Adressen 16 Bit und
auf den ungeraden 8 Bit (die oberen 8 Bit sind "unimplemented" und
liefern konstant 0).
> habe ich mehr als 64 KB zur Verfügung?
Nein: (0xac00-0x0200) / 2 * 3 = 65280.
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.