Hardwarezugriff- Flashbaustein durch Pointer

Gast #1023806
Lesenswert?

Hallo und einen guten Tag zusammen,

ich habe einen Mikrocontroller und einen 16 Bit breiten !!! Parallelen 
Flashbaustein der Firma ATMEL (AT49BV6416).
Nun greife ich lesend und schreibend mit einem Pointer auf die Adressen 
des Bausteins zu.

Ich habe einen 8bit Pointer benutzt.

// lesender Zugriff mit einem 8bit Pointer
u16 wert; (16 bit variable)
wert = *( ( volatile flash8bit * )flash->dev.base_addr + byte_addr);

1) Hier lese ich dann z.b 0x00FA;
das Highbyte ist immer Null ? Warum ?
Warum steht im Highbyte nicht der Wert der Adresse +1 ?


//schreibender Zugriff mit einem 8bit Pointer
u16 wert = FABC; (16 bit variable)
*( ( volatile flash8bit * )flash->dev.base_addr + byte_addr) = wert;

2) Wenn ich mir die beschriebene Adresse anschaue steht dort im Low Byte 
BC, im HighByte (Adresse +1) jedoch auch dieser Wert ?
Wie kann man das erklären ?

Vielen Dank für eure Hilfe
mfg Klaus
#1024295
Lesenswert?

Warum sollte er dir denn das Highbyte liefern ?
Wenn du sagst es ist ein Pointer auf ein Byte dann kann er dir auch nur 
ein Byte liefern liefern. Mach doch mal einen Word  Pointer draus.
Im ueberigen ist das kein 8 Bit Pointer sondern ein Pointer auf 8 Bit 
breite (Byte,char) Daten. Die Anzahl der Bits des Pointer selber ist 
dabei abhaengig vom jeweiligen Prozessor.

Gruss Helmi
Gast #1024471
Lesenswert?

Hallo,

auf einen 16Bit breiten Flash kann man nur 16bit breit schreiben!
Es gibt auch umschaltbare Flash speicher 8/16. Aber da kann man im 16Bit 
mode auch nur alle 16Bit schreiben.


Das Signal WE (Write Enable) gilt immer für den ganzen 16 Bit Datenbus.

wenn du nur 8Bit ändern willst musst du die anderen Bits auf 0xFF setzen 
und als 16Bit Wert einschreiben.


Lesen funktioniert, weil dein Controller alle 16Bit aus dem Flash ließt 
und dann aber die nicht benötigten 8bits ignoriert.


mfg

DerDan

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren