Pointer Hardwarezugriff

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 14 7 2026  01:22:38      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Oszilloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
Pointer Hardwarezugriff

    







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 = 558666

DonComi

Inventar



Beiträge: 8604
Wohnort: Amerika

 

  

Edit:
Blödsinn entfernt...

Dennoch fehlt irgendwie etwas an Information..

[ Diese Nachricht wurde geändert von: DonComi am 24 Okt 2008 22:38 ]

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 ]


Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 7 Beiträge im Durchschnitt pro Tag       heute wurden bisher 1 Beiträge verfasst
© x sparkkelsputz        Besucher : 192379836   Heute : 251    Gestern : 4606    Online : 359        14.7.2026    1:22
2 Besucher in den letzten 60 Sekunden        alle 30.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0490930080414