Probleme mit IOW40 und I2C

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

Probleme mit IOW40 und I2C

Post by friend-of-rq »

Hallo zusammen ...

bin gerade dabei mein Testprogramm für IOW mit der I2C-Funktion zu erweitern ...

zum probieren verwende ich ein ST24C02 (eeprom 256x8) an einem IOW40 mit dem iow-kit V1.4

für dem IOW verwende ich zwei eigene Funktionen :
IOWwrite1(RID,Flag,D,D,D,D,D,D)
IOWreadP1 Result= RID;Flag;D;D;D;D;D;D

auf die Details der beiden Funktionen gehe ich hier erstmal
nicht näher ein ...


nach dem initalisieren des I2C iowwriteP1(1,1,0,0,0,0,0,0)
sende ich ...

IIC-start
IOWwriteP1(2,128,0,0,0,0,0,0) IOWreadP1=2;255;0;0;0;0;0;0

Daten(100-115) ab adr=0 in das eeprom schreiben Devadr=160
iowwriteP1(2,6,160,0,100,101,102,103) IOWreadP1=2;6;0;0;0;0;0;0
iowwriteP1(2,6,104,105,106,107,108,109) IOWreadP1=2;6;0;0;0;0;0;0
iowwriteP1(2,6,110,111,112,113,114,115) IOWreadP1=2;6;0;0;0;0;0;0

IIC-stop
iowwriteP1(2,64,0,0,0,0,0,0) IOWreadP1=2;255;0;0;0;0;0;0

soweit funktionier es supper, probleme habe ich beim einlesen ...

adr wieder auf null setzen
iowwriteP1(2,128,0,0,0,0,0,0) IOWreadP1= 2;255;0;0;0;0;0;0
iowwriteP1(2,2,160,0,0,0,0,0) IOWreadP1= 2;2;0;0;0;0;0;0
iowwriteP1(2,64,0,0,0,0,0,0) IOWreadP1= 2;255;0;0;0;0;0;0

iowwriteP1(3,12,161,0,0,0,0,0)
IOWreadP1= 3;6;100;101;102;103;104;105
IOWreadP1= 3;6;106;107;108;109;110;111


soweit auch noch ok .... will ich aber mehr als 12 Byte einlese bekomme ich nur noch Schrott z.B.

iowwriteP1(3,20,161,0,0,0,0,0)
IOWreadP1= 3;6;100;101;102;103;104;105
IOWreadP1= 3;6;112;113;114;115;255;255
IOWreadP1= 3;2;255;255;114;115;255;255
IOWreadP1= 0;0;0;0;0;0;0;0


oder

iowwriteP1(3,24,161,0,0,0,0,0)
IOWreadP1= 3;6;100;101;102;103;104;105
IOWreadP1= 3;6;112;113;114;115;255;255
IOWreadP1= 3;6;255;255;255;255;255;255
IOWreadP1= 0;0;0;0;0;0;0;0


ich kann doch bis zu 255 Byte einlesen ???

was mache ich falsch ....

mfg
R.Greinert
Guido Körber
Site Admin
Posts: 2879
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

IOWwriteP1(2,128,0,0,0,0,0,0) IOWreadP1=2;255;0;0;0;0;0;0


Was soll das denn????

Das ergibt keine Start-Condition, sondern einen Fehler.

Und was das Lesen von mehr als 12 Bytes betrifft: Windows hat da einen Fehler im USB, mehr als 2 Reports als Antwort verträgt es nicht.
friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Post by friend-of-rq »

hallo ....
das ging aber schnell
Was soll das denn????

Das ergibt keine Start-Condition, sondern einen Fehler.
was ist denn daran Falsch

start I2C >> (2,128,0,0,0,0,0,0)

start I2C >> (2,64,0,0,0,0,0,0)

Und was das Lesen von mehr als 12 Bytes betrifft: Windows hat da einen Fehler im USB, mehr als 2 Reports als Antwort verträgt es nicht.
gut .... wenn es denn nur so geht
Ein Vermerk in den Unterlagen [SDK] währe nicht schnecht ...

gruss
R.Greinert
Guido Körber
Site Admin
Posts: 2879
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

friend-of-rq wrote:hallo ....
was ist denn daran Falsch

start I2C >> (2,128,0,0,0,0,0,0)

start I2C >> (2,64,0,0,0,0,0,0)
Falsch daran ist, dass das keine Start-Condition ergibt, sondern einen Fehler. Wenn 0 Bytes angegeben werden macht der IO-Warrior gebau garnichts.

Abgesehen davon ist es auch wenig sinnvoll einen Report nur für Start oder Stop zu senden wenn man dafür nur ein einzelnes Bit im Report setzen muss.
friend-of-rq wrote:hallo ....
Und was das Lesen von mehr als 12 Bytes betrifft: Windows hat da einen Fehler im USB, mehr als 2 Reports als Antwort verträgt es nicht.
gut .... wenn es denn nur so geht
Ein Vermerk in den Unterlagen [SDK] währe nicht schnecht ...

gruss
R.Greinert
Steht drin, entweder im Datenblatt oder im FAQ.
friend-of-rq
Posts: 389
Joined: Sun Feb 13, 2005 1:22 pm
Location: Gerblingerode / Duderstadt
Contact:

Post by friend-of-rq »

sorry war gestern spät, als ich mich dran gesetzt habe ...

also bei der ersten Übertragung auf I2C Startbit gleich setzen ...

iowwriteP1(2,134,160,0,100,101,102,103) start +daten
iowwriteP1(2,6,104,105,106,107,108,109)
iowwriteP1(2,70,110,111,112,113,114,115) stop+daten

(so richtig ???)
Guido Körber
Site Admin
Posts: 2879
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

Ja.
Post Reply