12.11.2012 Aufrufe

Programmierung der AVR-Microcontroller mit C - UlrichRadig.de

Programmierung der AVR-Microcontroller mit C - UlrichRadig.de

Programmierung der AVR-Microcontroller mit C - UlrichRadig.de

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

it_is_clear (, );<br />

Die Funktion bit_is_clear prüft, ob ein Bit gelöscht ist. Wenn das Bit gelöscht ist, also auf 0 ist,<br />

wird ein Wert ungleich 0 zurückgegeben.<br />

4.1.2 SCHREIBEN EINES I/O-REGISTERS<br />

Zum Beschreiben eines I/O-Registers verwen<strong>de</strong>t man allgemein <strong>de</strong>n Befehl<br />

outp (, );<br />

Als Wert muss die Bitmaske <strong>mit</strong> <strong>de</strong>n Werten aller Pins angegeben wer<strong>de</strong>n.<br />

4.1.2.1 Schreiben eines Bits<br />

Auch für das Setzen bzw. Löschen eines einzelnen Bits eines I/O-Registers stellt die <strong>AVR</strong>-<br />

Bibliothek entsprechen<strong>de</strong> Funktionen zur Verfügung.<br />

sbi (, );<br />

Die Funktion sbi setzt ein beliebiges Bit eines Registers, das heisst, es wird <strong><strong>de</strong>r</strong> logische Wert 1 in<br />

das Bit geschrieben. Die an<strong><strong>de</strong>r</strong>en Bits <strong>de</strong>s Ports wer<strong>de</strong>n nicht verän<strong><strong>de</strong>r</strong>t.<br />

Das nie<strong><strong>de</strong>r</strong>wertigste Bit hat die Bitnummer 0.<br />

cbi (, );<br />

Die Funktion cbi löscht ein beliebiges Bit eines Registers, das heisst, es wird <strong><strong>de</strong>r</strong> logische Wert 0 in<br />

das Bit geschrieben. Die an<strong><strong>de</strong>r</strong>en Bits <strong>de</strong>s Ports wer<strong>de</strong>n nicht verän<strong><strong>de</strong>r</strong>t.<br />

Das nie<strong><strong>de</strong>r</strong>wertigste Bit hat die Bitnummer 0.<br />

4.1.3 WARTEN AUF EINEN BESTIMMTEN ZUSTAND<br />

Es gibt in <strong><strong>de</strong>r</strong> Bibliothek sogar Funktionen, die Warten, bis ein bestimmter Zustand auf einem Bit<br />

erreicht ist.<br />

Es ist allerdings normalerweise eine eher unschöne Programmiertechnik.<br />

loop_until_bit_is_set(, );<br />

Die Funktion loop_until_bit_is_set wartet in einer Schleife, bis das <strong>de</strong>finierte Bit gesetzt ist. Wenn<br />

das Bit beim Aufruf <strong><strong>de</strong>r</strong> Funktion bereits gesetzt ist wird die Funktion sofort wie<strong><strong>de</strong>r</strong> verlassen.<br />

Das nie<strong><strong>de</strong>r</strong>wertigste Bit hat die Bitnummer 0.<br />

loop_until_bit_is_clear(, );<br />

Die Funktion loop_until_bit_is_clear wartet in einer Schleife, bis das <strong>de</strong>finierte Bit gelöscht ist.<br />

Wenn das Bit beim Aufruf <strong><strong>de</strong>r</strong> Funktion bereits gelöscht ist wird die Funktion sofort wie<strong><strong>de</strong>r</strong><br />

verlassen.<br />

Das nie<strong><strong>de</strong>r</strong>wertigste Bit hat die Bitnummer 0.<br />

4.1.4 SPEICHERBEZOGENER PORTZUGRIFF<br />

In <strong><strong>de</strong>r</strong> Regel sind die weiter oben erwähnten Funktionen zu bevorzugen. Es kann aber auch sein,<br />

dass wird mal eine Stufe tiefer einsteigen müssen. Dann verwen<strong>de</strong>n wir für <strong>de</strong>n Portzugriff das<br />

Synonym __mmio.<br />

__mmio()<br />

Diese Funktion dient <strong>de</strong>m speicherbasierten Zugriff auf die Ports (Memory Mapped I/O).<br />

Die Funktion kann sowohl zum Lesen als auch zum Schreiben eines Ports verwen<strong>de</strong>t wer<strong>de</strong>n.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!