Anfängerprobleme mit Simple-I2C und Eeprom

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

Moderator: Guido Körber

Zakkrifice
Posts: 12
Joined: Tue Jul 05, 2022 1:21 pm

Re: Anfängerprobleme mit Simple-I2C und Eeprom

Post by Zakkrifice »

Funktioniert! Habe mich jetzt schrittweise vorgearbeitet und lese grade 32 byte am Stück aus, die ich dann in 4 dbl je 8 byte umwandle.

Vielen Dank!! Problem gelöst!
User avatar
Christoph Jung
Posts: 672
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: Anfängerprobleme mit Simple-I2C und Eeprom

Post by Christoph Jung »

Trotzdem würde ich die Vi mal mit der letzten Lib neu bauen, nicht das noch andere Stolpersteine drin sind.
Software developer
Zakkrifice
Posts: 12
Joined: Tue Jul 05, 2022 1:21 pm

Re: Anfängerprobleme mit Simple-I2C und Eeprom

Post by Zakkrifice »

Hi!

Ich habe nochmal eine weiterführende Nachfrage:

Manchmal sürzt mir der IO-Warrior/Labview ab und ich habe den Verdacht, dass es mir der Anzahl "Ansprachen" des Devices zu tun hat. Die Fehlermeldung ist die Folgende:

IOWarrior_Special_Rawread.vi:1200001: IOWarrior RawRead error: Not 64 bytes: 0

Tritt immer in Folge eines "Rawread"-Aufrufs auf und enthält nicht mehr das angeforderte Byte-Wort, sondern 3 Byte:
03 0E A1

Gibt es eine Tabelle mit Erklärung der Error-Codes oder hat jemand einen Vorschlag, wie ich mich näher an die Lösung heranarbeiten kann?

Danke und viele Grüße!
User avatar
Christoph Jung
Posts: 672
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: Anfängerprobleme mit Simple-I2C und Eeprom

Post by Christoph Jung »

Der Iow56 hat beim I2C nur zwei Errorbits: ACK (0x80) und Arb Loss (0x40), steht im Datenblatt zum 56er.

Der Fehler
IOWarrior_Special_Rawread.vi:1200001: IOWarrior RawRead error: Not 64 bytes: 0
sieht eher danach aus, als ob ein Lesebefehl nicht ausgeführt werden konnte.
Das passiert in der Regel, wenn er ins Timeout läuft, welches man eingestellt hat. Ein versuch wäre mal den Timout zu verlängern.
Software developer
Zakkrifice
Posts: 12
Joined: Tue Jul 05, 2022 1:21 pm

Re: Anfängerprobleme mit Simple-I2C und Eeprom

Post by Zakkrifice »

Moin!

Den Timeout setzt man ja am Anfang. Muss man den zwischen verschiedenen Lesebefehlen aufrufen, damit der warrior den macht? Denn ich hab ne While-Schleife mit dem immer gleichen Lesebefehl und die läuft definitiv schneller, als der Time-out, den ich da gesetzt habe.

Danke!
User avatar
Christoph Jung
Posts: 672
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: Anfängerprobleme mit Simple-I2C und Eeprom

Post by Christoph Jung »

Der Timeout ist global für in der iowkit.dll und muss nur einmal gesetzt werden. Sprich einmal nach dem Open() setzten und dann einfach vergessen.

Wie schnell wird denn die Loop durchlaufen? Evtl. dort mal einen Timer/Sleep oder wie man das in LabView nennt einbauen und schauen ob das damit verschwindet. 1ms oder 5ms zum Test. Der IOW56 kann maximal alle 2ms einen Report senden/Empfangen wenn ich mich recht erinnere.
Software developer
Zakkrifice
Posts: 12
Joined: Tue Jul 05, 2022 1:21 pm

Re: Anfängerprobleme mit Simple-I2C und Eeprom

Post by Zakkrifice »

Der Fehler tritt auf mit dem 200ms Timer im Loop und nem Timeout von 1000ms. Ich hab den Loop jetzt mal auf 1500 runtergebremst, damit er langsamer läuft, als der Timeout.

Is jetzt bisschen langweilig im Büro ;-)
User avatar
Christoph Jung
Posts: 672
Joined: Sun Oct 08, 2006 3:43 pm
Location: Germany / Berlin
Contact:

Re: Anfängerprobleme mit Simple-I2C und Eeprom

Post by Christoph Jung »

Das ist dann doch schon was sehr langsam und 200ms sollte eigentlich funktionieren. Evtl. müsste man diese Fehler abfangen und den Lesevorgang einfach erneut durchführen. So handhabe ich das in C/C++ Programmen immer.
Software developer
Zakkrifice
Posts: 12
Joined: Tue Jul 05, 2022 1:21 pm

Re: Anfängerprobleme mit Simple-I2C und Eeprom

Post by Zakkrifice »

So habe ich es jetzt gelöst. Ich fange den Fehler auf, gehe in eine umgebende while-Schleife, lösche den Fehler und initialisiere den Warrior neu.....so lange bis eine Nutzereingabe die Schleifen stoppt. Das hat jetzt recht gut funktioniert.

Ein schönes Wochenende!
Post Reply