Hallo,
ich finde nur die Aufgabenstellung extrem .... was_auch_immer ....
Würde es darum gehen mit dem IOWarrior-PinMode ein paar bits durch ein Schieberegister zu schleusen (Stichwort Lauflicht mit Led's) wäre es ja OK, aber so was hier?
Na ja egal.
Hinweis:
Die (seriellen) Daten vom AD-Wandler müssen natürlich auch wieder zu einem Byte-Wert zusammengebastelt werden, indem man die 8 einzelnen Bits die in der Schleife von DOut gelesen werden, in dieses Byte shifted.
Eberhard
Analog/Digital Wandler mit dem IO-Warrior
Moderator: Guido Körber
-
- Posts: 14
- Joined: Thu Feb 07, 2008 4:57 pm
Hallo zusammen,
wann ich den Dout abfangen muss weiß ich...Ich hab einfach nur das Gefühl das ich den Read Befehl falsch anwende.
Hab gestern zumindest mal andere Werte als 0 bekommen. Ist ja schon ein Teilerfolg......Mit dem Schieberigister habe ich auch schon gemacht.
Die Daten werden Seriell eingegeben und Paralell ausgegeben.....Die Software funktioniert bereits. Der nächste Schritt war jetzt der A/D Wandler, und als letztes wird noch ein Schieberegister kommen welches als Eingang benutzt wird. Allerdings wird diesmal parallel eingelesen und seriel ausgegeben.
Naja jetzt erst ma A/D Wandler
Mfg
MagicMaster
wann ich den Dout abfangen muss weiß ich...Ich hab einfach nur das Gefühl das ich den Read Befehl falsch anwende.
Hab gestern zumindest mal andere Werte als 0 bekommen. Ist ja schon ein Teilerfolg......Mit dem Schieberigister habe ich auch schon gemacht.
Die Daten werden Seriell eingegeben und Paralell ausgegeben.....Die Software funktioniert bereits. Der nächste Schritt war jetzt der A/D Wandler, und als letztes wird noch ein Schieberegister kommen welches als Eingang benutzt wird. Allerdings wird diesmal parallel eingelesen und seriel ausgegeben.
Naja jetzt erst ma A/D Wandler
Mfg
MagicMaster
-
- Site Admin
- Posts: 2876
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Hallo,
Schickt der IOW denn einen Report wenn das CS-Signal oder das CLK-Signal seinen Zustand wechselt? Ist es klar das der Iow keinen Report schickt wenn sich der Zustand an DOUT nicht ändert? Also keine Information ist in diesem Fall die Information!
Man darf nicht vergessen, dass man beim Lesen von den IO-Pins des IOWarrior nicht den aktuellen Zustand erhält, sondern nur die letzte Zustandsänderung.
Der Ansatz von friend-of-rq mit dem SpecialMode currentPinStatus ist da schon besser.
Eberhard
also mir wäre das nicht klar!MagicMaster wrote:wann ich den Dout abfangen muss weiß ich...
Schickt der IOW denn einen Report wenn das CS-Signal oder das CLK-Signal seinen Zustand wechselt? Ist es klar das der Iow keinen Report schickt wenn sich der Zustand an DOUT nicht ändert? Also keine Information ist in diesem Fall die Information!
Man darf nicht vergessen, dass man beim Lesen von den IO-Pins des IOWarrior nicht den aktuellen Zustand erhält, sondern nur die letzte Zustandsänderung.
Der Ansatz von friend-of-rq mit dem SpecialMode currentPinStatus ist da schon besser.
Eberhard
-
- Posts: 389
- Joined: Sun Feb 13, 2005 1:22 pm
- Location: Gerblingerode / Duderstadt
- Contact:
Hallo wayoda,
genau um diese Problem zu umgehen, verwende ich nur noch dem SpecialMode (currentPinStatus).
Ich habe mir dafür eine Function geschrieben, der teile ich mit welche Reports ich haben will : z.B.das funktioniert aber nur dann wenn man nicht gleich von mehreren IOW-SpecialMode Daten erwartet / auswerten möchte, denn die werden ins NICHTS geschickt ....
Ich benutze es in meinem Testprogramm, da habe ich immer nur ein IOW-SpecialMode aktiv.der wert (count) ist so was wie ein timeout und gibt an wie viel mal max gepollt werden soll.
genau um diese Problem zu umgehen, verwende ich nur noch dem SpecialMode (currentPinStatus).
Ich habe mir dafür eine Function geschrieben, der teile ich mit welche Reports ich haben will : z.B.
Code: Select all
reports :
0 = NICHTS
2 = I2C
3 = I2C
6 = LCD
9 = SPI
12 = RC5
25 = switch Matrix
26 = switch Matrix
255 = Ports
Ich benutze es in meinem Testprogramm, da habe ich immer nur ein IOW-SpecialMode aktiv.
Code: Select all
Function iow_read(report as integer , count as integer) as long
dim nx as integer
dim x as integer
dim xin as integer
nx=8 ' IOW 24 / 40
if iowid= "1503" then nx= 64 ' IOW 56
x=0
do
xin= ReadDeviceNB(iowH,1,DatIn(0),nx)
x++
loop until DatIn(0) = report or x > count
if x > count then
result= -1
else
result= xin
end if
end function