Portpin mit doppelter Funktion
Das hat wahrscheinlich jeder schonmal erlebt: Man bastelt eine schöne Mikrocontroller Schaltung, die auch perfekt funktioniert, und am Schluss stellt man fest, dass man einen IO Pin zuwenig hat, um doch noch eine zusätzliche Funktion einzubauen. Wenn man die Möglichkeit hat, auf einen grösseren Prozessortyp auszuweichen, oder einen Portexpander zu verwenden, ist das natürlich überhaupt kein Problem, aber häufig muss man mit der bestehenden Hardware auskommen.

Dann muss man sich Gedanken machen, wie man die vorhandenen Resourcen besser nutzen kann. Hier bieten sich verschiedene Möglichkeiten an, zum Beispiel das Ansteuern von LED's im Multiplex oder Charliepleximg Betrieb, diese sind aber meist nur mit grösseren Änderungen nachträglich einzubauen.

Die hier gezeigte Schaltung hingegen ist eine sehr einfache Lösung, mit welcher man einen einzelnen Portpin für zwei Aufgaben praktisch gleichzeitig nutzen kann, nämlich als Ausgang für eine LED und als Eingang für einen Taster.


Prinzipschaltung für Mikrocontroller

Wie man sieht, entspricht die Aussenbeschaltung eigentlich genau derjenigen, die man auch für beide Funktionen getrennt verwenden würde. Der Trick liegt nun darin, den Portpin so zu konfigurieren, dass er sowohl die LED ansteuert als auch den Taster abfrägt. Das kann man durch entsprechend schnelles Wechseln der Betriebsarten erreichen. Normalerweise wird mit dem Portpin die LED auf Masse geschaltet, damit sie leuchtet. Wenn man den Portpin jetzt als Eingang schaltet, wird die LED verlöschen, und stattdessen kann erkannt werden, ob der Taster gedrückt ist.

Die Abfrage des Tasters geschieht dabei sehr schnell, somit stört das die LED nicht sonderlich, das minimale Flackern ist mit blossem Auge praktisch nicht wahrnehmbar.

Die Beispielsoftware funktioniert wie folgt:

Ein Interrupt wird etwa 36 mal pro Sekunde ausgeführt, die LED an PB0 blinkt dabei im 0.5Hz Rythmus. Bei jeder Ausführung der Interruptroutine wird der Pin PB0 kurz als Eingang geschaltet und der Zustand abgefragt. Wenn der Eingang auf Masse liegt, ist der Taster betätigt worden und als Kontrolle wird dann PB1 aktiviert.

Man muss auf alle Fälle durch geeignete Programmierung sicherstellen, dass PB0 niemals als Ausgang mit HIGH Pegel definiert ist, sonst würde beim Betätigen des Tasters ein zu grosser Strom nach Masse fliessen, der den Controller beschädigen könnte!

Mit diesem kleinen Trick kann man bestehende Schaltungen leicht um einen Taster oder eine LED erweitern, es ist nur eine Änderung an der Software nötig. Als kleine Einschränkung muss man dafür hinnehmen, dass die LED dann auf jeden Fall leuchtet, wenn der Taster gedrückt wird, aber das ist meist nicht wirklich ein Problem.

Das Beispielprogramm ist für einen Atmel Tiny 13, aber natürlich funktioniert dieses Prinzip mit praktisch jedem Mikrocontroller, dessen IO Pins in den TriState Zustand geschaltet werden können.

Neueste Artikel
Anzeigen:
Aktuelle Newsbeiträge
Sie sind Besucher Nr. 1138788