Statusbytes RevPi Connect

Die RevPi Connect Module verfügen über LEDs von denen drei frei verwendbar sind. Außerdem können über das LED Control Byte RevPiLED der Watchdog und das Relais angesteuert werden.

Bit Komponente Bedeutung
0 LED A1 Wenn das Bit auf 0 gesetzt ist, ist die LED aus. Bei 1 leuchtet sie grün.
1 Wenn das Bit auf 0 gesetzt ist, ist die LED aus. Bei 1 leuchtet sie rot.
2 LED A2 Wenn das Bit auf 0 gesetzt ist, ist die LED aus. Bei 1 leuchtet sie grün.
3 Wenn das Bit auf 0 gesetzt ist, ist die LED aus. Bei 1 leuchtet sie rot.
4 LED A3 Wenn das Bit auf 0 gesetzt ist, ist die LED aus. Bei 1 leuchtet sie grün.
5 Wenn das Bit auf 0 gesetzt ist, ist die LED aus. Bei 1 leuchtet sie rot.
6 Relais Wenn das Bit auf 0 gesetzt ist, ist das Relais am Stecker X2 geschlossen, bei 1 ist es geöffnet.
7 Watchdog Um den Watchdog-Timer neu zu starten muss das Bit innerhalb von 60 Sekunden einmal auf 0 und einmal auf 1 gesetzt werden.

Wenn bei einer LED gleichzeitig rot und grün eingeschaltet sind leuchtet sie orange.

Im Verzeichnis /home/pi/demo gibt es die Headerdatei piControl.h in der Defines PICONTROL_LED_A… für diese LEDs definiert werden. Ein kleines Beispielprogramm folgt unten.

Das Byte ‚RevPiStatus‘ enthält den Status des piControl-Treibers. Beachte bitte, dass hier zwischen I/O-Modulen (DIO, DI, DO, AIO, …) und piGate-Modulen unterschieden wird.

Bit Bedeutung
0, 0x01 piControl-Treiber läuft
1, 0x02 Es ist mind. ein I/O-Modul angeschlossen, das nicht mit PiCtory konfiguriert wurde.
2, 0x04 Es ist mind. ein I/O-Modul mit PiCtory konfiguriert worden, das aber nicht angeschlossen ist. Das Bit ist außerdem gesetzt, wenn ein piGate konfiguriert wurde.
3, 0x08 Ein I/O-Modul belegt mehr oder weniger Bytes im Prozessabbild als in der PiCtory-Konfiguration angegeben. Das kann nur passieren, wenn die Version der Konfigurationsdatei bzw. der verwendeten Gerätebeschreibungsdateien nicht zu der Firmware im I/O-Modul passt. Besorge Dir ein Update von PiCtory.
4, 0x10 Links vom RevPi ist ein piGate Modul angeschlossen.
5, 0x20 Rechts vom RevPi ist ein piGate Modul angeschlossen. (Ist beim RevPi Connect nicht möglich)
6, 0x40 Aktueller Wert des Eingangs am Stecker X2. 0 entspricht 0V, 1 entspricht 24V.

Das Programm piTest -d zeigt detailliert an, welche Module angeschlossen sind und ob sie in PiCtory konfiguriert wurden oder nicht.

PiCtory Konfiguration

Beachte bitte, dass immer nur das gewünschte Bit im Byte RevPiLED geändert werden sollte. Wenn man z.B. von LED A3 grün einschalten will, kann man PiTest -w RevPiLED,16 aufrufen. Das schaltet aber gleichzeitig die LEDs A1 und A2 aus. Man muss also den aktuellen Wert lesen, das gewünschte Bit ändern und dann das ganze Byte zurück schreiben.

In C kann man einen ioctl-Call benutzen, der genau das macht. Das folgende Beispiel schaltet ebenfalls die LED A3 grün ein, lässt die anderen LEDs aber unverändert.

int hd;
SPIValue sPIValue;

hd = open(PICONTROL_DEVICE, O_RDWR);
sPIValue.i16uAddress = 116;
sPIValue.i8uBit = 4;
sPIValue.i8uValue = 1;
ioctl(hd, KB_SET_VALUE, &sPIValue);