Analog/Digital Wandler mit dem IO-Warrior

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

Moderator: Guido Körber

wayoda
Posts: 362
Joined: Fri Dec 19, 2003 12:00 pm
Location: Wuppertal/Germany

Post by wayoda »

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
MagicMaster
Posts: 14
Joined: Thu Feb 07, 2008 4:57 pm

Post by MagicMaster »

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
Guido Körber
Site Admin
Posts: 2876
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

Der IO-Warrior sendet jedes mal wenn sich der Status von mindestens einem Pin ändert den neuen Zustand. Diese Reports werden in einen Buffer geschrieben. iowkitRead liest aus diesem Buffer, man kann da also durchaus alte Daten bekommen.
wayoda
Posts: 362
Joined: Fri Dec 19, 2003 12:00 pm
Location: Wuppertal/Germany

Post by wayoda »

Hallo,
MagicMaster wrote:wann ich den Dout abfangen muss weiß ich...
also mir wäre das nicht klar!

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
friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Post by friend-of-rq »

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.

Code: Select all

reports :
0   = NICHTS
2   = I2C
3   = I2C
6   = LCD
9   = SPI
12  = RC5
25  = switch Matrix
26  = switch Matrix
255 = Ports
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.

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
der wert (count) ist so was wie ein timeout und gibt an wie viel mal max gepollt werden soll.
Post Reply