IOW 24 Input-Pins "bleiben hängen"

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

Post Reply
bboy
Posts: 4
Joined: Mon Jul 02, 2012 3:47 pm

IOW 24 Input-Pins "bleiben hängen"

Post by bboy »

Hallo,

ich hab eine ASE-Relaiskarte, diese benutzt ein IOW24 und dort die Pinns 1-8 als Eingänge und 17-24 als Ausgänge.
Um die Karte an meinen Linux-Server zu betreiben, habe ich mir ein kleines Programm geschrieben Quellcode

Das Auslesen der Pinns geschieht wie folgt:

Code: Select all

        memset(&this->report, 0xFF, IOWKIT24_IO_REPORT_SIZE);
        IowKitSetTimeout(this->ioHandle, 1000);
        if (IowKitReadImmediate(this->ioHandle, &reads))
        {...
Das komische ist, dass hier die Input Pinns öfters "hangen bleiben", auch wenn sie wirklich off
sind meldet der Report on. Erst ein abziehen des USB-Steckers setzt dann alles wieder zurück.

Hat das auch schon mal jemand gehabt?
Wie kann ich das abstellen?

Gruß Mario
User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: IOW 24 Input-Pins "bleiben hängen"

Post by Christoph Jung »

Wie genau äußert sich das "hängen bleiben"? Belibt das Programm hängen oder der IO-Warrior?
Welche Distribution wird denn verwendet.
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
bboy
Posts: 4
Joined: Mon Jul 02, 2012 3:47 pm

Re: IOW 24 Input-Pins "bleiben hängen"

Post by bboy »

Hallo Christoph,

"hangen bleiben" = die Eingänge bleiben beim auslesen immer an (der entsprechende Bit bleibt immer 0),
erst ein komplettes ausschalten der Karte setzt sie wieder zurück.

Distribution ? ich nehme mal na die Linux Distri = Debian 2.6.32 (»Squeeze«)
Guido Körber
Site Admin
Posts: 2856
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Re: IOW 24 Input-Pins "bleiben hängen"

Post by Guido Körber »

Hört sich danach an, als wenn möglicherweise die Vorgehensweise Auslesen, Maskieren, Zurückschreiben verwendet wird um Ausgänge zu setzen?

In dem Fall wird der Eingangswert "0" eines Pins als Ausgabewert zurück geschrieben.
bboy
Posts: 4
Joined: Mon Jul 02, 2012 3:47 pm

Re: IOW 24 Input-Pins "bleiben hängen"

Post by bboy »

Hallo Guido,

ja so mache ich das.
Wenn das nicht so sein soll, wie kann ich die Bits der Eingänge "nicht setzten"?

Gruß Mario
User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: IOW 24 Input-Pins "bleiben hängen"

Post by Christoph Jung »

Wie ist das denn nun verdrahtet / belegt bzw. wie funktioniert das Programm überhaupt und was macht es?

Wird denn beim setzen der Ports auch drauf geachtet, was vorher drin stand?
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
Guido Körber
Site Admin
Posts: 2856
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Re: IOW 24 Input-Pins "bleiben hängen"

Post by Guido Körber »

Die Vorgehensweise ist genau falsch. Der IO-Warrior hat ja kein Datenrichtungsregister. Alle Pins sind immer Eingänge und haben einen Open Drain Treiber, den man mit dem Output-Befehl schreibt.

Also bekommt man beim Lesen immer den elektrischen Zustand aussen am Pin gemeldet. Wenn man dann die Daten zurück schreibt, werden an allen Pins die eine Null hatten die Open Drain Treiber aktiv und die ziehen dann den Pin auf Null.

Die richtige Vorgehensweise ist es den Ausgangszustand zu speichern, diesen zu verändern und dann zu schreiben. Pins die als Eingänge arbeiten sollen müssen immer auf 1 gesetzt werden.
bboy
Posts: 4
Joined: Mon Jul 02, 2012 3:47 pm

Re: IOW 24 Input-Pins "bleiben hängen"

Post by bboy »

Hallo Guido,

Du bist mein Held!
In dem Fall wird der Eingangswert "0" eines Pins als Ausgabewert zurück geschrieben
Pins die als Eingänge arbeiten sollen müssen immer auf 1 gesetzt werden.
... das hatte ich zwar schon gelesen und war auch der Meinung, dass ich es schon im Code hatte.
War aber nicht, hatte ich einfach vergessen.


Vielen Dank an alle
Mario
Post Reply