Benutzer-Werkzeuge

Webseiten-Werkzeuge


softwarebausteine:entprellte_eingabe

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 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.

  1. Es können maximal 8 Eingänge von insgesamt 2 Ports konfiguriert werden
  2. Die Pins eines Ports sollten zusammenhängend sein
  3. Die beiden Gruppen müssen ohne Überlappung in eine 8-Bit-Variable verschoben werden
  4. Das niederwertigste Bit wird als INPPUT0 interpretiert
  5. 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-Software einbinden in BiDiBOne), sollten auch hier die angeforderten Portpins unbedingt gekennzeichnet werden:

Softwareeinbindung

Neben der Konfiguration ist die Weiterleitung einer dieser Eingangs-Informationen mit der Funktion: check_debounced_inputaus dem Modul keyboard.c möglich.

Das kann z.B. in der Callback-Funktion check_input_addon aus dem Modul addon.c passieren.

Zusammenfassung

  1. Konfiguration in addon_model.h
  2. Abfrage und Weiterleitung in check_input_addon mit check_debounced_input
softwarebausteine/entprellte_eingabe.txt · Zuletzt geändert: 2014/09/01 12:34 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki