BID = 557918
hansmaulwurf Gesprächig
  
Beiträge: 194
|
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
|
BID = 568030
Brizz Stammposter
   
Beiträge: 386 Wohnort: Rheine
|
Weil Du nur ein Byte liest, kann der gelesen Wert nur zwischen 0 und 255 sein.
Versuch doch einmal:
wert = *( ( volatile flash8bit * )flash->dev.base_addr + byte_addr);
wert <<= 8;
wert += *( ( volatile flash8bit * )flash->dev.base_addr + byte_addr+1);
Falls das Lowbyte auf der niederen und das Highbyte auf der höheren Adresse liegen:
wert = *( ( volatile flash8bit * )flash->dev.base_addr + byte_addr+1);
wert <<= 8;
wert += *( ( volatile flash8bit * )flash->dev.base_addr + byte_addr);
[ Diese Nachricht wurde geändert von: Brizz am 27 Nov 2008 23:32 ]
|