www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hardwarezugriff- Flashbaustein durch Pointer


Autor: KLaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo...!
Kann mir hier niemamd helfen ???
Vielen Dank

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: DerDan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.