Forum: Mikrocontroller und Digitale Elektronik Flash Speicher beim dsPIC33fj64gs606


von Max (Gast)


Lesenswert?

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

von fchk (Gast)


Lesenswert?

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

von foobar (Gast)


Lesenswert?

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