mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Funktionen aus libATSAM7S256.h


Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin.
Habe da so eine Verständnisfrage.
Manche Funktionen aus libATSAM7S256.h erscheinen mir nicht ganz 
richtig(oder mache ich einen Denkfehler?). So z.B.
__inline void AT91F_PIO_SetOutput(
  AT91PS_PIO pPio,   // \arg  pointer to a PIO controller
  unsigned int flag) // \arg  output to be set
{
  pPio->PIO_SODR = flag;
}
Mit AT91F_PIO_SetOutput(AT91C_PIO_PA28) wir PA28 HIGH gesetzt. 
AT91C_PIO_PA28 ist ja (1<<28), d.h. (1<<28)=0x10000000. Was wiederum 
heist,  dass alle zuvor gesetzten Pins LOW werden(?). Muss es nicht so
 pPio->PIO_SODR | = flag; 
 sein?

Oder in
__inline void AT91F_PIO_CfgPeriph(
  AT91PS_PIO pPio,             // \arg pointer to a PIO controller
  unsigned int periphAEnable,  // \arg PERIPH A to enable
  unsigned int periphBEnable)  // \arg PERIPH B to enable

{
  pPio->PIO_ASR = periphAEnable;
  pPio->PIO_BSR = periphBEnable;
  pPio->PIO_PDR = (periphAEnable | periphBEnable); // Set in Periph mode
}
wird hier nicht auch die zuvor eingestellte Peräpherie deaktiviert?

Autor: Daniel J. (deejay)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

nein, es muss kein |= sein. Beim dem ARM gibt es jeweils extra ein 
Register zum Setzen und ein Register zum Zurücksetzen (SODR = Set output 
data register oder so, das Gegenstück wäre CODR = clear output data 
register). Schreibst Du ein Bit in SODR, geht der Ausgang auf high, 
schreibst Du das entsprechende Bit in CODR, geht der Ausgang auf Low. 
Nullen schreiben ändert nix...
Ist bei vielen Peripherie-Registern so...

MfG
 Deejay

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.