Named PIN

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche

Named PIN ist eine Abstraktionsschicht über Port IO dem ECMD-Mechanismus zum Ansteuern der I/O-Pins des Mikrocontrollers. Das Pinning muss vorher aktiviert werden. Über make menuconfig geht das in I/O ---> Named and logistic state I/O. Weiter muss dann erstmal nichts getan werden, wenn man mit der Zuordnung in $TOPDIR/pinning/named_pin/default einverstanden ist. PA0 kann dann mit p1 angesprochen werden, PA1 mit p2 usw.

Anders als die normalen Port IO-ECMD-Befehle sieht Named PIN symbolische Namen vor, soll heißen man steuert nicht den Pin PD7 an, von dem man wissen muss, dass an diesem beispielsweise das Relais zur Steuerung des Audio-Verstärkers angeschlossen ist, sondern man steuert eben den Pin Verstaerker an.

Die Zuordnung von I/O-Pin und symbolischem Namen erfolgt zur Zeit des Kompilierens. Es können verschiedene Konfigurationen ausgewählt werden die unter pinning/named_pin liegen. Diese können entweder direkt im menuconfig editiert werden oder durch direktes bearbeiten der Datei. Um eine neue Konfiguration hinzuzufügen einfach im Ordner pinning/named_pin eine neue Datei hinzufügen, die folgendes Format hat:

# PIN | IN/OUT | When active? | Name
#-----+--------+--------------+----------------
PD7     OUTPUT   HIGH           Verstaerker

Zum Ansteuern dieses Pins können nun nachfolgende ECMD-Befehle verwendet werden:

  • pin set Verstaerker on
  • pin set Verstaerker off
  • pin toggle Verstaerker

Wenn die Ansteuerung des Geräts außerhalb des Ethersex invertiert erfolgt, d.h. der Verstärker wird eingeschaltet, wenn der Pin low geht, kann dies in der Konfigurationsdatei entsprechend berücksichtigt werden (einfach LOW statt HIGH schreiben). Dann hat ein pin set Verstaerker on die Folge, dass der Pin PD7 auf LOW gezogen wird.

Mit Named PIN können auch Eingänge verwaltet werden. Dann einfach INPUT anstelle von OUTPUT in der Konfigurationsdatei angeben. Die LOW/HIGH-Logik funktioniert ebenso wie bei Ausgabepins. Abfragen kann man den so eingerichteten Pin schließlich mit pin get MeinEingabepin.