Hardwarezugriff- Flashbaustein durch Pointer

Gast #1023806
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
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
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

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.