softwarebausteine:entprellte_eingabe
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
softwarebausteine:entprellte_eingabe [2014/07/01 11:30] – angelegt Michael | softwarebausteine:entprellte_eingabe [2014/09/01 12:34] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
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 " | ||
+ | |||
+ | 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 " | ||
+ | |||
+ | Je nach Anzahl der Eingaben (ein bis acht) werden die Ereignisse '' | ||
+ | |||
+ | Die Eingänge werden als '' | ||
+ | |||
+ | ==== Konfiguration ==== | ||
+ | |||
+ | Die in der BiDiBOne-Basis-Firmware implementierte " | ||
+ | {{: | ||
+ | - 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 | ||
+ | | **EXTERNAL_INPUT_ACTIVE_TO_GND** | TRUE/ | ||
+ | | **EXTERNAL1_INPUT_ENABLED** | ||
+ | | **EXTERNAL1_INPUT_PORT** | ||
+ | | **EXTERNAL1_INPUT_MASK** | ||
+ | | **EXTERNAL1_INPUT_SHIFT** | ||
+ | | | >0 | Verschiebung nach links (positiv) | ||
+ | | | <0 | Verschiebung nach rechts (negativ) | | ||
+ | Analog dazu wird **EXTERNAL2...** definiert. | ||
+ | |||
+ | Um Konflikte zu vermeiden (siehe [[: | ||
+ | {{: | ||
+ | |||
+ | ==== Softwareeinbindung ==== | ||
+ | |||
+ | Neben der Konfiguration ist die Weiterleitung einer dieser Eingangs-Informationen mit der Funktion: '' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Das kann z.B. in der Callback-Funktion '' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ==== Zusammenfassung ==== | ||
+ | - Konfiguration in '' | ||
+ | - Abfrage und Weiterleitung in '' | ||
+ | |||