www.mikrocontroller.net

Forum: Compiler & IDEs Wert/Adresszuweisung


Autor: Peter Zaun (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum

Angenommen ich habe einen Speicher via erweitertem Adressbus am µC und 
will dort was auslesen. In einem Musterprogramm fand ich folgendes:


header.h
------------------
#define _OFFSET_  0x0A000000
MEM_REG1    .EQU ( 0x0004 + _OFFSET_ )


main.C
------------------
uint32_t readmem ( uint32_t input )
{
return (((input & 0xFF000000)>>24) + ((input & 0x00FF0000)>>8) + ((input 
& 0x0000FF00)<<8) + ((input & 0x000000FF)<<24));
}

temp = (readmem ( MEM_REG1 ) );


Ich verstehe nicht wie die Funktion readmem auf den Speicher zugreifen 
kann, wenn die keine Adresse bekommt. Meiner Meinung bekommt sie die 
Zahl 0x0004 + 0x0A000000 und das wars. Wie weis die Funktion dass es 
eine Adresse ist und somit auf den Wert der sich dort verbirgt zugreifen 
muss? Ich hätte jetzt irgendwo ein * vermutet....

Das Programm funktioniert so, nur kann ich es mir nicht erklären.

Danke für einen Tipp.
PS: wie kann man Code hervorheben?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sieht aus, als hätte da jemand über memory-mapped IO auf einen
externen RAM zugegriffen.  Wie das genau funktioniert, kann man nur
mit Kenntnis der dafür benutzten Hardware (Controller, RAM-Interface)
beantworten.

> PS: wie kann man Code hervorheben?

Mit [ c ]...[ /c ], [ avrasm ]...[ /avrasm ] (?) oder [ pre ]...[ /pre 
].
Jeweils die Leerzeichen weglasssen.

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.