www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Syntacs Frage Keil MDK


Autor: Frederic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo an alle

zur Zeit beschäftige ich mich mit meinem Atmel AT91SAM7X256-EK Board, 
mit der IDE(MDK401) von Keil und habe dort eine einfache Syntacs Frage:

Im Syntacs Steht
AT91C_BASE_PMC->PMC_PCER  = 1 << AT91C_ID_PIOA;
Was Bewirkt der Operator „->“ und warum muss ich bei jeder 
Registeroperation die „BASE“ angeben. Ich Verstehe einfach noch nicht 
die komplette Zeile.
Im Internet habe ich schon Gesucht aber nix gefunden.
Vielleicht kann mir einer von euch weiterhelfen oder ein gutes Tutorial 
nennen.

Gruß Frederic

Autor: Marvin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
'<<' ist der Bitschiftoperator, d.h. die '1' wird um die Konstante nach 
rechts verschoben. Beispiel: '1 << 0' ergibt 0x01,'1 << 1' ergibt 
0x02,'1 << 3' ergibt 0x08 und '1 << 7' ergibt 0x80. Das ganze wird mesit 
genutzt um Kontrollregister zubeschreiben, in denen einzelne Flags 
gesetzt werden.

Autor: Marvin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich sehe gerade du meintest '->', der  wird benutz wenn du mittels 
Pointer auf ein struct zugreifst.

Autor: Frederic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke schonmal für deine Schnelle antwort.

Ich habe mal nachgesehen wass hinter der Konstante AT91C_BASE_PMC und 
PMC_PCER Stekt :
#define AT91C_BASE_PMC       (AT91_CAST(AT91PS_PMC)   0xFFFFFC00)
#define PMC_PCER        (AT91_CAST(AT91_REG *)   0x00000010)

Warum muss ich mit einem Pointer auf das Register zugreifen?

Autor: Random ... (thorstendb) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
weil die register im header als pointer auf struktur definiert sind.
diese variante ist sehr viel sauberer als 1.000.000.000.000 #defines in 
#defines in #defines in ... :-)

VG,
/th.

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.