Wie schnell bemerkt ein Warrior eine Pinänderung

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
Franz Peter Zantis
Posts: 97
Joined: Wed Aug 03, 2011 3:46 pm
Contact:

Wie schnell bemerkt ein Warrior eine Pinänderung

Post by Franz Peter Zantis »

Ein Warrior56 soll mit einem ADU zusammenarbeiten. Der ADU benötigt für eine Conversion (Zeit für die Sampleabnahme und Erstellung des Digitalwertes) 22 µs. Während dieser Zeit wird ein Pin des ADU auf High gesetzt. Ich möchte nun jedesmal, wenn der Pin des ADU von high nach low gesprungen ist, den Samplewert abholen. Dazu muss der Warrior den 22µs kurzen High-Impuls erkennen. Ich habe dies in einer Schleife versucht, wobei die Werte sofort in eine Textdatei geschrieben werden inklusive einer Zeitmarke:

Do
ret = IowKitRead(IOHandle, 0, data(0), 8)
If IsBitSet(data(3), 0) Then 'ist das STATUS-Bit gesetzt?
'Statusbit prüfen: falls die conversation gerade läuft: keinen Wert übernehmen
conversionrunning = True
Else
If conversionrunning Then 'war das STATUS-Bit vorher gesetzt?

'bytes übernehmen und dabei negieren und dann zusammenfassen
lowbyte = (Not data(1))
highbyte = (Not data(2))
sampleresult = highbyte * 256 + lowbyte
objTextWriter.WriteLine(sampleresult & " " & Now.ToString("ss.fff"))

'das Status-Bit ist jetzt nicht gesetzt: diesen Zustand sichern
conversionrunning = False
End If
End If
Loop

Eigentlich müssen die Ergebnisse nun im Takt des ADU (in diesem Fall mit einem konstanten Abstand von 5 ms) erfaßt und in die Datei geschrieben werden. Leider ist das nicht der Fall. Es gibt immer wieder "Aussetzer". Es sieht so aus, als würde der Warrior den schmalen Conversion-Puls von 22 µs manchmal übersehen.
Guido Körber
Site Admin
Posts: 2856
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Re: Wie schnell bemerkt ein Warrior eine Pinänderung

Post by Guido Körber »

Na da könnte ich fast unterschreiben, dass der IO-Warrior diese Impulse in den meisten Fällen nicht übertragen kann.

Die Paketrate der IOW56 beträgt 1000 pro Sekunde. Wozu muss man da eine Wartezeit im Mikrosekundenbereich gezielt abfragen? Es ist gar nicht möglich die Abfrage der Daten zu schnell zu machen.
Post Reply