Problem mit Linux Device-Treiber
Posted: 09 Mar 2020, 09:29
Guten Tag,
beim Lesen der Eingänge im RevPi gibt es folgendes Problem:
nach erfolgreichem "piControlRead(offset, 8, pValues);"
stehen die Werte der Eingänge in pValues[1]:pValues[0]
für Gerät-Nr.1 (RevPi DIO, InputOffset1 = 11) funktioniert das einwandfrei
jedoch springen die Werte für Gerät-Nr.2 (RevPi DIO, InputOffset2 = 124)
und Gerät-Nr3 (RevPi DIO, InputOffset3 = 237) scheinbar sporadisch
an eine andere Position bzw. entsprechen nicht den Werten,
die die tatsächlichen Signale der Eingänge repräsentieren.
Hier ein Beispiel:
Prozessabbilder der Eingänge, so wie sie tatsächlich an den Pins (D7..D0) anliegen
PII3: 0000000000111111
PII2: 0011100000000000
PII1: 0000000000111001
werden in pValues[] zunächst korrekt ausgegeben (hier hex)
p_Val3[7..0]: 00 00 00 00 00 00 00 3f
p_Val2[7..0]: 00 00 00 00 00 00 38 00
p_Val1[7..0]: 00 00 00 00 00 00 00 39
obwohl an den Eingängen nichts verändert wird passiert sporadisch nun folgendes:
PII3: 0000000000111111
PII2: 0000000000000110 (!)
PII1: 0000000000111001
p_Val3[7..0]: 00 00 00 00 00 00 00 3f
p_Val2[7..0]: 00 00 00 00 00 38 00 06 (!)
p_Val1[7..0]: 00 00 00 00 00 00 00 39
oder auch so:
PII3: 0011100000000000 (!)
PII2: 0011100000000000
PII1: 0000000000111001
p_Val3[7..0]: 00 00 00 00 00 00 38 00 (!)
p_Val2[7..0]: 00 00 00 00 00 00 38 00
p_Val1[7..0]: 00 00 00 00 00 00 00 39
anscheinend passiert hier etwas unvorhergesehenes in /dev/piControl0
gibt es einen Fix? oder was kann man tun?
Gruß
beim Lesen der Eingänge im RevPi gibt es folgendes Problem:
nach erfolgreichem "piControlRead(offset, 8, pValues);"
stehen die Werte der Eingänge in pValues[1]:pValues[0]
für Gerät-Nr.1 (RevPi DIO, InputOffset1 = 11) funktioniert das einwandfrei
jedoch springen die Werte für Gerät-Nr.2 (RevPi DIO, InputOffset2 = 124)
und Gerät-Nr3 (RevPi DIO, InputOffset3 = 237) scheinbar sporadisch
an eine andere Position bzw. entsprechen nicht den Werten,
die die tatsächlichen Signale der Eingänge repräsentieren.
Hier ein Beispiel:
Prozessabbilder der Eingänge, so wie sie tatsächlich an den Pins (D7..D0) anliegen
PII3: 0000000000111111
PII2: 0011100000000000
PII1: 0000000000111001
werden in pValues[] zunächst korrekt ausgegeben (hier hex)
p_Val3[7..0]: 00 00 00 00 00 00 00 3f
p_Val2[7..0]: 00 00 00 00 00 00 38 00
p_Val1[7..0]: 00 00 00 00 00 00 00 39
obwohl an den Eingängen nichts verändert wird passiert sporadisch nun folgendes:
PII3: 0000000000111111
PII2: 0000000000000110 (!)
PII1: 0000000000111001
p_Val3[7..0]: 00 00 00 00 00 00 00 3f
p_Val2[7..0]: 00 00 00 00 00 38 00 06 (!)
p_Val1[7..0]: 00 00 00 00 00 00 00 39
oder auch so:
PII3: 0011100000000000 (!)
PII2: 0011100000000000
PII1: 0000000000111001
p_Val3[7..0]: 00 00 00 00 00 00 38 00 (!)
p_Val2[7..0]: 00 00 00 00 00 00 38 00
p_Val1[7..0]: 00 00 00 00 00 00 00 39
anscheinend passiert hier etwas unvorhergesehenes in /dev/piControl0
gibt es einen Fix? oder was kann man tun?
Gruß