Benutzer-Werkzeuge

Webseiten-Werkzeuge


softwarebausteine:entprellte_eingabe

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
softwarebausteine:entprellte_eingabe [2014/07/02 15:14]
Michael [Konfiguration]
softwarebausteine:entprellte_eingabe [2014/09/01 12:34] (aktuell)
Zeile 1: Zeile 1:
 +===== Entprellte Eingabe (Debouncing) =====
 +
 +Die BiDiBOne-Basis-Firmware enthält ein einfache Funktionalität für entprellte Eingaben wie Schalter und Taster. Diese Eingabeinformationen können an den BiDiBus gesendet und für die Steuerung von Makros verwendet werden.
 +
 +==== Hintergrund ====
 +
 +Mechanische Schaltelemente wie Taster, Schalter oder auch Relais prellen beim Umschalten, d.h. sie schalten nicht plötzlich von einem in den anderen Zustand um, sondern wechseln im Millisekundenbereich ihren Zustand bis zur gewollten Ruhelage. Dieses Verhalten wird als "​Prellen"​ bezeichnet.
 +
 +Da einige Millisekunden für den Prozessor eine Ewigkeit sind, würde eine nicht optimierte Software jede Änderung dieser Schaltzustände auswerten und zu Fehlschlüssen gelangen. Probates Mittel dagegen ist das so genannte Entprellen (engl. debounce). In analogen Systemen wird das Prellen u.A. mittels Kondensatoren unterbunden. In unserer BiDiBOne-Basis entprellen wir diese Signale Software technisch.
 +
 +==== Resourenbelegung ====
 +
 +Die "​entprellte Eingabe"​ bildet die Eingangsinformationen auf die [[softwarebausteine:​event-system#​Keyboard-Ereignisse|Keyboard-Ereignisse im Event-System]] ab.
 +
 +Je nach Anzahl der Eingaben (ein bis acht) werden die Ereignisse ''​IN_DOWN0''​ bzw. ''​IN_UP0''​ bis ''​IN_DOWN7''​ bzw. ''​IN_UP7''​ verwendet. Die dürfen dann nicht mehr anderweitig verwendet werden.
 +
 +Die Eingänge werden als ''​INPUT''​ beginnend bei 0 aufsteigend im System geführt.
 +
 +==== Konfiguration ====
 +
 +Die in der BiDiBOne-Basis-Firmware implementierte "​Entprellte Eingabe"​ wird durch Konfiguration in ''​addon_model.h''​ aktiviert.
 +{{:​softwarebausteine:​onest_addon_model_external.jpg|}}
 +  - Es können maximal 8 Eingänge von insgesamt 2 Ports konfiguriert werden
 +  - Die Pins eines Ports sollten zusammenhängend sein
 +  - Die beiden Gruppen müssen ohne Überlappung in eine 8-Bit-Variable verschoben werden
 +  - Das niederwertigste Bit wird als INPPUT0 interpretiert
 +  - EXTERNAL2 wird nur mit EXTERNAL1 aktiviert
 +
 +^  Definition ​                     ^  Wert         ^ Bedeutung ^
 +| **EXTERNAL_INPUT_ACTIVE_TO_GND** | TRUE/​FALSE ​   | Aktivlage aller Eingänge ​          |
 +| **EXTERNAL1_INPUT_ENABLED** ​     | FALSE/​TRUE ​   | deaktiviert/​aktiviert die Gruppe ​  |
 +| **EXTERNAL1_INPUT_PORT** ​        | PORTA...PORTF | Port von dem gelesen wird          |
 +| **EXTERNAL1_INPUT_MASK** ​        | 0x00...0xFF ​  | Maske für die relevanten Bits      |
 +| **EXTERNAL1_INPUT_SHIFT** ​       | 0             | ohne Verschiebung ​                 |
 +|                                  | >0            | Verschiebung nach links (positiv) ​ |
 +|                                  | <0            | Verschiebung nach rechts (negativ) |
 +Analog dazu wird **EXTERNAL2...** definiert.
 +
 +Um Konflikte zu vermeiden (siehe [[:​addon_einbinden#​Konflikte|AddOn-Software einbinden in BiDiBOne]]),​ sollten auch hier die angeforderten Portpins unbedingt gekennzeichnet werden:
 +{{:​softwarebausteine:​onest_addon_model_i_need.jpg|}}
 +
 +==== Softwareeinbindung ====
 +
 +Neben der Konfiguration ist die Weiterleitung einer dieser Eingangs-Informationen mit der Funktion: ''​check_debounced_input''​aus dem Modul ''​keyboard.c''​ möglich.
 +
 +{{:​softwarebausteine:​onest_check_input_addon.jpg|}}
 +
 +Das kann z.B. in der Callback-Funktion ''​check_input_addon''​ aus dem Modul ''​addon.c''​ passieren.
 +
 +{{:​softwarebausteine:​onest_check_input_addon.jpg|}}
 +
 +==== Zusammenfassung ====
 +  - Konfiguration in ''​addon_model.h''​
 +  - Abfrage und Weiterleitung in ''​check_input_addon''​ mit ''​check_debounced_input''​
 +
  
softwarebausteine/entprellte_eingabe.txt · Zuletzt geändert: 2014/09/01 12:34 (Externe Bearbeitung)