Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
einfache_ein-_und_ausgaben [2012/04/12 08:41] – huwaldt | einfache_ein-_und_ausgaben [2019/07/27 16:43] (aktuell) – huwi | ||
---|---|---|---|
Zeile 2: | Zeile 2: | ||
In diesem Abschnitt soll ebenfalls auf der Basis der myAVR C++ Portdeklarationen die Realisierung von einfachen Eingaben veranschaulicht werden. Zuerst wollen wir kurz die Spezifik der Eingabe über Taster diskutieren. Das Bild verdeutlicht, | In diesem Abschnitt soll ebenfalls auf der Basis der myAVR C++ Portdeklarationen die Realisierung von einfachen Eingaben veranschaulicht werden. Zuerst wollen wir kurz die Spezifik der Eingabe über Taster diskutieren. Das Bild verdeutlicht, | ||
- | >>> | + | > |
Offene Eingänge sind empfindliche Empfänger für allerlei Elektrosmog. Die Eingabe liefert faktisch willkürliche Signale. Abhilfe schaffen hier sogenannte PullDown- oder PullUp-Widerstände. Diese ziehen die Leitung auf ein definiertes Potenzial und entstören diese somit. | Offene Eingänge sind empfindliche Empfänger für allerlei Elektrosmog. Die Eingabe liefert faktisch willkürliche Signale. Abhilfe schaffen hier sogenannte PullDown- oder PullUp-Widerstände. Diese ziehen die Leitung auf ein definiertes Potenzial und entstören diese somit. | ||
Früher wurden diese PullUp-Widerstände in der Schaltung explizit eingebaut. AVR Controller verfügen über interne PullUp- und die Xmega Serie zusätzlich auch noch über interne PullDown-Widerstände. Diese müssen bei Bedarf einfach nur aktiviert werden. Dazu dienen die bereits angesprochenen Register, welche zu einem GPIO-Port gehören. Wenn ein Port als Eingang konfiguriert ist, wird beim AVR über das Ausgaberegister keine Ausgabe erzeugt, sondern der interne PullUp aktiviert. | Früher wurden diese PullUp-Widerstände in der Schaltung explizit eingebaut. AVR Controller verfügen über interne PullUp- und die Xmega Serie zusätzlich auch noch über interne PullDown-Widerstände. Diese müssen bei Bedarf einfach nur aktiviert werden. Dazu dienen die bereits angesprochenen Register, welche zu einem GPIO-Port gehören. Wenn ein Port als Eingang konfiguriert ist, wird beim AVR über das Ausgaberegister keine Ausgabe erzeugt, sondern der interne PullUp aktiviert. | ||
- | >>>< | + | >< |
// Port D Bit 2 als Eingang konfigurieren | // Port D Bit 2 als Eingang konfigurieren | ||
ddrD.bit2 = 0; | ddrD.bit2 = 0; | ||
Zeile 23: | Zeile 23: | ||
**Eingabe von einem Taster in der Bedingung in einer Alternative auswerten: | **Eingabe von einem Taster in der Bedingung in einer Alternative auswerten: | ||
- | >>>< | + | >< |
if ( pinD.bit2 == 0 ) // wenn Taster an D.2 gedrückt | if ( pinD.bit2 == 0 ) // wenn Taster an D.2 gedrückt | ||
{ | { | ||
Zeile 35: | Zeile 35: | ||
**Eingabe von einem Taster in der Bedingung in Schleife auswerten: | **Eingabe von einem Taster in der Bedingung in Schleife auswerten: | ||
- | >>>< | + | >< |
while ( pinD.bit2 == 0 ) // solange Taster an D.2 gedrückt ist | while ( pinD.bit2 == 0 ) // solange Taster an D.2 gedrückt ist | ||
{ | { | ||
Zeile 43: | Zeile 43: | ||
**Zustand von einem Taster in einer Variablen speichern: | **Zustand von einem Taster in einer Variablen speichern: | ||
- | >>>< | + | >< |
bool tastenZusatnd; | bool tastenZusatnd; | ||
tastenZustand = pinD.bit2; | tastenZustand = pinD.bit2; | ||
Zeile 50: | Zeile 50: | ||
Die Möglichkeiten der Auswertung und Kombination mit anderen Ausdrücken in C und C++ sind schier unendlich. Wesentlich ist Schreibweise des Zugriffs auf einzelne Bits über den Punktoperator. Unser erstes Beispiel für eine Eingabe von einer Taste ist das Beispiel // | Die Möglichkeiten der Auswertung und Kombination mit anderen Ausdrücken in C und C++ sind schier unendlich. Wesentlich ist Schreibweise des Zugriffs auf einzelne Bits über den Punktoperator. Unser erstes Beispiel für eine Eingabe von einer Taste ist das Beispiel // | ||
- | >>> | + | > |
Die Initialisierungen von Taster und LED erfolgen in der Operation // | Die Initialisierungen von Taster und LED erfolgen in der Operation // | ||
Zeile 56: | Zeile 56: | ||
Immer zuerst einen Entwurf estellen! Dann darüber nachdenken und ggf. den Entwurf korrigieren. | Immer zuerst einen Entwurf estellen! Dann darüber nachdenken und ggf. den Entwurf korrigieren. | ||
- | >>>< | + | >< |
////////////////////////////////////////////////////////// | ////////////////////////////////////////////////////////// | ||
// Lichtschalter 1 ENTWURF | // Lichtschalter 1 ENTWURF | ||
Zeile 82: | Zeile 82: | ||
Jetzt den Entwurf realisieren. | Jetzt den Entwurf realisieren. | ||
- | >>>< | + | >< |
////////////////////////////////////////////////////////// | ////////////////////////////////////////////////////////// | ||
// Lichtschalter 1 | // Lichtschalter 1 | ||
Zeile 112: | Zeile 112: | ||
Kompilieren, | Kompilieren, | ||
- | >>> | + | > |
Bevor wir diesen Abschnitt verlassen und uns den etwas komfortableren Klassen für Taster und LEDs zuwenden, soll die LED noch bei Tastendruck blinken. Bei der Gelegenheit soll kurz angedeutet werden, dass mit den vorgestellten GPIO-Strukturen auch Bitoperationen möglich sind. Das Blinken bedeutet, dass die LED nach einer gewissen Wartezeit umgeschaltet werden muss. Die geeignete Bitoperation dafür ist das XOR. Schauen Sie sich die Schreibweise und Bedeutung des [[http:// | Bevor wir diesen Abschnitt verlassen und uns den etwas komfortableren Klassen für Taster und LEDs zuwenden, soll die LED noch bei Tastendruck blinken. Bei der Gelegenheit soll kurz angedeutet werden, dass mit den vorgestellten GPIO-Strukturen auch Bitoperationen möglich sind. Das Blinken bedeutet, dass die LED nach einer gewissen Wartezeit umgeschaltet werden muss. Die geeignete Bitoperation dafür ist das XOR. Schauen Sie sich die Schreibweise und Bedeutung des [[http:// | ||
- | {{: | + | >{{: |
Kompilieren, | Kompilieren, | ||
Zeile 122: | Zeile 122: | ||
====== Videozusammenfassung ====== | ====== Videozusammenfassung ====== | ||
- | >>><flashplayer | + | ><html><iframe |
- | >>> | ||
====== Nächstes Thema ====== | ====== Nächstes Thema ====== | ||
[[Timer|den Timer nutzen]] | [[Timer|den Timer nutzen]] |