Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
einfache_ein-_und_ausgaben [2012/04/12 08:42] huwaldteinfache_ein-_und_ausgaben [2019/07/27 16:42] 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, dass ein Taster solange er nicht gedrückt ist mit seiner Verbindung bis zum Controller eine Antenne darstellt. 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, dass ein Taster solange er nicht gedrückt ist mit seiner Verbindung bis zum Controller eine Antenne darstellt.
  
->>>{{:offenereingang.jpg?300|}} {{:eingangpulllup.jpg?300|}}+>{{:offenereingang.jpg?300|}} {{:eingangpulllup.jpg?300|}}
  
 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.
  
->>><code cpp>+><code cpp>
 // 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:**
->>><code cpp>+><code cpp>
 if ( pinD.bit2 == 0 ) // wenn Taster an D.2 gedrückt  if ( pinD.bit2 == 0 ) // wenn Taster an D.2 gedrückt 
 { {
Zeile 112: Zeile 112:
 Kompilieren, linken und brennen Sie die Anwendung. Die LED sollte jetzt nur dann leuchten, wenn die Taste gedrückt ist. Kompilieren, linken und brennen Sie die Anwendung. Die LED sollte jetzt nur dann leuchten, wenn die Taste gedrückt ist.
  
->>>{{:lichtsachalter1a.jpg?300|}}+>{{:lichtsachalter1a.jpg?300|}}
  
 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://openbook.galileocomputing.de/c_von_a_bis_z/006_c_operatoren_005.htm#mj47da0e8682ea7d892f3113146cd64cb1|XOR-Operators in C/C++]] ruhig noch mal an. 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://openbook.galileocomputing.de/c_von_a_bis_z/006_c_operatoren_005.htm#mj47da0e8682ea7d892f3113146cd64cb1|XOR-Operators in C/C++]] ruhig noch mal an.
  
-{{:blinkgeber.jpg|}}+>{{:blinkgeber.jpg|}}
  
 Kompilieren, linken und übertragen Sie die Anwendung auf den Controller. Die LED sollte jetzt blinken, wenn die Taste gedrückt ist. Variieren Sie die Wartezeit in Millisekunden. Kompilieren, linken und übertragen Sie die Anwendung auf den Controller. Die LED sollte jetzt blinken, wenn die Taste gedrückt ist. Variieren Sie die Wartezeit in Millisekunden.
Zeile 122: Zeile 122:
 ====== Videozusammenfassung ====== ====== Videozusammenfassung ======
  
->>><flashplayer width="700" height="550" position="0">file=http://youtu.be/s4FNuobXVNM</flashplayer>+><html><iframe width="700" height="550" src="https://www.youtube.com/embed/s4FNuobXVNM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></html> 
  
->>>[[http://youtu.be/s4FNuobXVNM|besser auf youTube]] 
  
 ====== Nächstes Thema ====== ====== Nächstes Thema ======
 [[Timer|den Timer nutzen]] [[Timer|den Timer nutzen]]