Forum: Mikrocontroller und Digitale Elektronik Hardwarezugriff- Flashbaustein durch Pointer


von KLaus (Gast)


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

von Klaus (Gast)


Lesenswert?

Hallo...!
Kann mir hier niemamd helfen ???
Vielen Dank

von Helmut L. (helmi1)


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

von DerDan (Gast)


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

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.