IOW24PV

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:

IOW24PV

Post by Franz Peter Zantis »

Mein erster Versuch mit einem IOW24PV ist nicht sehr erfolgreich:
Es sollen Daten über SPI an einen DAU (MCP4822) übertragen werden. Diesen DAU setze ich häufig ein - bisher immer erfolgreich in Verbindung mit dem IOW56.
Im unten stehenden Code werden die Daten zunächst korrekt übertragen. Dann setzt plötzlich der Takt aus - bis zum Neustart des Programms. Was ist falsch?
Es scheint sogar so zu sein, dass der Takt dann aussetzt, wenn ich den zu übergebenden Wert erhöhe. Beginne ich bei dem höchsten zu übergebenden Wert und
werde kleiner mit dem zu übertragenden Wert funktioniert die Übertragung. Erhöhe ich dann den zu übertragenden Wert setzt der Takt aus und das Programm
muss neu gestartet werden.


Viele Grüße
Franz Peter Zantis



Private Sub BtnPulsAmplitude_Click(sender As System.Object, e As System.EventArgs) Handles BtnPulsAmplitude.Click
SPIsettings(0) = &H8 'Initialisierung des SPI-Bus
SPIsettings(1) = &H1 'SPI-Bus einschalten
SPIsettings(2) = &H3 '0,0625Mbit/s; mode MSB first, Mode to communicate with DAU
retint = IowKitWrite(iohandle, 1, SPIsettings(0), 8)

If IsNumeric(Me.TxBxPulsAmplitude.Text) Then
PulsAmpFloat = CInt(Me.TxBxPulsAmplitude.Text)
PulsAmpFloat = Math.Abs(PulsAmpFloat)

If (PulsAmpFloat < 0) Then
PulsAmplitude = 0
Me.TxBxPulsAmplitude.Text = "0"
End If
If (PulsAmpFloat > 12000) Then
PulsAmplitude = 12000
Me.TxBxPulsAmplitude.Text = "12000" 'mV
End If
If ((PulsAmpFloat >= 0) And (PulsAmpFloat <= 12000)) Then
PulsAmpFloat = 2047 / 12000 * PulsAmpFloat
PulsAmplitude = CUShort(PulsAmpFloat)
End If

Debug.Print(Convert.ToString(PulsAmplitude))

PulsAmplitudeByte = SeparateHiByteLoByte(PulsAmplitude)
PulsAmplitudeByte(1) = SetBit(PulsAmplitudeByte(1), 4) 'Bit12 vom DAU, 1 = Output aktiv
PulsAmplitudeByte(1) = ClearBit(PulsAmplitudeByte(1), 5) 'Bit13 vom DAU, 0 = Ausgangsspannung ist max. 4095 mV
PulsAmplitudeByte(1) = SetBit(PulsAmplitudeByte(1), 6) 'Bit14 vom DAU, nicht relevant
PulsAmplitudeByte(1) = ClearBit(PulsAmplitudeByte(1), 7) 'Bit15 vom DAU, Ausgang A Pin 8


iowrite(2) = ClearBit(iowrite(2), 1)
retint = IowKitWrite(iohandle, 0, iowrite(0), 3)

SPIsend(0) = &H9 'indicator for sending via SPI
SPIsend(1) = 2 'flags and number of data to send
SPIsend(2) = PulsAmplitudeByte(1)
SPIsend(3) = PulsAmplitudeByte(0)
retint = IowKitWrite(iohandle, 1, SPIsend(0), 8)
retint = IowKitRead(iohandle, 1, SPIread(0), 8)

iowrite(2) = SetBit(iowrite(2), 1)
retint = IowKitWrite(iohandle, 0, iowrite(0), 3)
End If
End Sub
User avatar
Christoph Jung
Posts: 670
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: IOW24PV

Post by Christoph Jung »

Hallo Herr Zantis,

warum setzten Sie den IOW24PV ein? Der ist wie der IOW24 abgekündigt und es macht keine Sinn jetzt auf den umzusteigen oder sich mit dem Chip zu befassen.

Nichts desto trotz sehe ich im Code keine Fehler. Allerdings kann ich der Fehlerbeschreibung nicht ganz folgen. Welcher Takt setzt aus und was hat das mit
den Werten zu tun?
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
Franz Peter Zantis
Posts: 97
Joined: Wed Aug 03, 2011 3:46 pm
Contact:

Re: IOW24PV

Post by Franz Peter Zantis »

Hallo Herr Jung,

ja - der Chip ist abgekündigt. Das weiß ich. Ich dachte der IOW24PV wird benötigt wenn man mehr Strom als 100 mA aus der USB-Schnittstelle entnehmen zu möchte. Dass das auch mit dem IOW24 oder dem IOW56 möglich ist habe ich erst jetzt gelernt.
Wird denn der Nachfolger des IOW24 ganz anders zu verwenden sein?

Jedenfalls habe ich noch nicht herausgefunden, warum der Takt des SPI-Busses plötzlich stoppt. Einige Werte werden über MOSI übertragen und dann stoppt der SPI-Takt. Die Beobachtung, dass dies vor allem dann passiert, wenn die über MOSI zu übertragenen Werte ansteigen ist nicht wirklich nachgewiesen. Beim Testen unserer Applikation hatte es den Anschein.

Viele Grüße
Franz Peter Zantis
Guido Körber
Site Admin
Posts: 2856
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Re: IOW24PV

Post by Guido Körber »

Der IOW24PV war primär dazu gedacht standardkonform Strom vom USB zu zapfen. Darum hat der die hart verdrahteten Steuerleitungen.

Der IOW28 basiert auf einer komplett anderen Hardwareplattform. Zum IOW24PV wird es kein Äquivalent geben.
Post Reply