IOW kaputt oder Fehler in SimpleHDWrite?

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
finalcu
Posts: 26
Joined: Fri Nov 13, 2009 8:53 am

IOW kaputt oder Fehler in SimpleHDWrite?

Post by finalcu »

Hallo Zusammen,

ich nutze einen IOW40 um einen Schrittmotor zu steuern, was eigentlich auch ganz normal zu funktionieren scheint. Wenn ich jedoch die Sample Software SimeplHDWrite.exe verwende so kommt es manchmal vor, dass die Software plötzlich Reports ausliest und dies im Sekundentakt wiederholt. Dabei ist der Report immer der gleiche. Wie ist das möglich sofern sich ja gar nichts geändert hat? Ist das ein Fehler der SimpleHDWrite.exe oder flimmert da irgendwas auf meinem Board? Wenn man danach den USB Stecker rauszieht und wieder einsteckt so ist alles wieder in Ordnung...
Guido Körber
Site Admin
Posts: 2879
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Re: IOW kaputt oder Fehler in SimpleHDWrite?

Post by Guido Körber »

Das hört sich nach sehr kurzen Impulsen an, wenn ein Flankenwechsel so schnell auf den letzten folgt, dass die Daten noch nicht abgesendet waren, dann kann genau das passieren.
finalcu
Posts: 26
Joined: Fri Nov 13, 2009 8:53 am

Re: IOW kaputt oder Fehler in SimpleHDWrite?

Post by finalcu »

was könnte ein derartiges Flimmern verursachen?
Guido Körber
Site Admin
Posts: 2879
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Re: IOW kaputt oder Fehler in SimpleHDWrite?

Post by Guido Körber »

Ein Störsignal?
friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Re: IOW kaputt oder Fehler in SimpleHDWrite?

Post by friend-of-rq »

@ finalcu
ich nutze einen IOW40 um einen Schrittmotor zu steuern
Verwendest Du ein Test-Board oder ist die Schaltung eine eigen Konstruktion, ein Schaltplan wäre auch nicht schlecht.
finalcu
Posts: 26
Joined: Fri Nov 13, 2009 8:53 am

Re: IOW kaputt oder Fehler in SimpleHDWrite?

Post by finalcu »

Ich verwende das IOW40 Starterkit und hab ne fertige Schrittmotorensteuerungskarte draufgelötet. Soeben ist mir aufgefallen, dass der Fehler in meiner Software liegen könnte. Wenn ich einen Pin ändern will, dann mache ich das indem ich den aktuellen Report nehme und dort den Pin ändere und dann den aktualisierten Report mittels IowKitWrite() schreibe. Dabei ändere ich den Pin aber nur im DWORD Report.Value. Muss in Report.Bytes[] das gleiche stehen oder spielt das keine Rolle?
Guido Körber
Site Admin
Posts: 2879
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Re: IOW kaputt oder Fehler in SimpleHDWrite?

Post by Guido Körber »

Ganz schlechte Idee das was man vom IO-Warrior bekommen hat als Ausgabewert wieder zurück zu schreiben. Damit setzt man dann Pins die vorher eigentlich Eingänge waren aber extern auf 0 gezogen wurden als gegen Masse treibende Ausgänge.
finalcu
Posts: 26
Joined: Fri Nov 13, 2009 8:53 am

Re: IOW kaputt oder Fehler in SimpleHDWrite?

Post by finalcu »

das berücksichtige ich natürlich indem ich anfangs definiere welche Pins als Eingänge und welche als Ausgänge gebraucht werden. Report.Value wird am Ende noch mit einer Maske verodert wobei eine 1 in der Maske steht, wenn der jeweilige Pin ein Eingang ist. Das scheint eigentlich auch zu funktionieren, ich vertseh nur nicht ganz was der Unterschied zwischen Report.Value und Report.Bytes[] ist und welches der beiden für den Schreibprozess relevant ist.
User avatar
Christoph Jung
Posts: 673
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: IOW kaputt oder Fehler in SimpleHDWrite?

Post by Christoph Jung »

report.Value beschreibt alle Ports auf einmal und ist nur für die SimpleIO-Funktion.
report.Bytes[] für die einzelnen Ports oder die Specialmode-Funktionen zuständig.
Software developer
finalcu
Posts: 26
Joined: Fri Nov 13, 2009 8:53 am

Re: IOW kaputt oder Fehler in SimpleHDWrite?

Post by finalcu »

wenn ich aber einen neuen Report anlege, woher weiss die write() Funktion nun ob es die Daten aus Report.Value oder Report.Bytes nehmen soll sofern es sich um eine einfache Schreibaktion (Pipe 0) handelt.
Guido Körber
Site Admin
Posts: 2879
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Re: IOW kaputt oder Fehler in SimpleHDWrite?

Post by Guido Körber »

Indem man die Datenstruktur nimmt die auch zur jeweiligen Pipe passt?

Die SimpleIO Struktur hat beim IOW40 4 Bytes plus ReportID (die in diesem Fall nicht benutzt wird) und die SpecialMode Struktur hat 7 Bytes plus ReportID.
finalcu
Posts: 26
Joined: Fri Nov 13, 2009 8:53 am

Re: IOW kaputt oder Fehler in SimpleHDWrite?

Post by finalcu »

Die SimpleIO Struktur hat also 4 Bytes und eine ReportID = 0 (nur fuer Windows zwingend). Schaut man sich nun den IOW40Report struct an so sieht man ReportID, Value, und Bytes[4]. Bisher habe ich stets die Variable Value fuer eine einfache Schreibaktion genommen aber so wie ich das verstanden habe, koennte man die zu schreibenden Daten auch in Bytes[] schreiben. Die Frage ist nun was passiert wenn ich einen Report schreibe, der in Value was anderes als in Bytes[] stehen hat. Woher weiss IowKitWrite() ob es die Daten aus Value oder Bytes[] schreiben soll?

Oder verstehe ich das was komplett falsch?
User avatar
Christoph Jung
Posts: 673
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: IOW kaputt oder Fehler in SimpleHDWrite?

Post by Christoph Jung »

Dfür gibt es die Strucktur "IOWKIT_SPECIAL_REPORT" die das handhabt. Den Rest macht die DLL. Zur not mal in die Doku zur DLL schauen, da ist das ein wenig beschrieben.
Software developer
Post Reply