Ist mein IOW24 kaputt

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
dereulenspiegel
Posts: 14
Joined: Mon Dec 26, 2005 7:55 pm

Ist mein IOW24 kaputt

Post by dereulenspiegel »

Hallo,

Ich habe eine Paltine mit dem IOW24 aufgebaut. Dort soll er per IIC einen DS2482 ansprechen. Leider funktioniert das nicht wirklich. Schreiben lässt sich wohl auf den IOW24, aber es lässt sich nichts lesen. Weder Reports aus der Pipe 1, noch Reports aus der Pipe 0. Ich kann also auch nicht den Status der Pins lesen. Initialisieren lässt sich der IOW24 anscheinend ohne Probleme.
Guido Körber
Site Admin
Posts: 2856
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

Das ist dann wohl eher ein Softwareproblem. Wenn der Chip defekt wäre, dann würde eher garnichts mehr gehen.
dereulenspiegel
Posts: 14
Joined: Mon Dec 26, 2005 7:55 pm

Post by dereulenspiegel »

Im Prinzip geht ja auch gar nichts mehr. Ich erhalte beim Schreiben ja lediglich die Bestätigung, dass 8 Bytes geschrieben wurden.
Hier mal der Testcode den ich geschrieben habe. Vielleicht übersehe ich auch nur was dummes.

Edit:
Ein Lesen mit den General HID Tools, die beim SDK dabei sind funktioniert auch nicht. Wenn ich GetLastError() aufrufe erhalte ich den Fehlercode 1460. Gibt es eigentlich eine Übersicht über die Fehlercodes?

Code: Select all

int main()
{
	char report[8];
	for(int i=0;i<=7;i++){
		report[i]=0;
	}
	
	ULONG res;
	
	report[0]=1;
	report[1]=1;
	
    iow=IowKitOpenDevice();
	if(IowKitGetProductId(iow)==IOWKIT_PRODUCT_ID_IOW24){
		cout << "IOW24 ist angeschlossen" << endl;
		cout << "Lese Pin-Status ein" << endl;
        IowKitRead(iow,0,report,8);
        cout << report[0] << " | " << report[1] << " | " << report[2] << endl;
        report[0]=1;
	    report[1]=1;
	    res=IowKitWrite(iow,1,report,8);
		cout << "Starte IIC-Bus" << endl;
		if(res==8){
			cout << "IIC-Bus gestartet" << endl;
		}
		else{
			cout << "Fehler beim Starten des IIC-Bus" << endl;
			return 0;
		}
	}
	else{
		cout << "Kein gueltiges Geraet angeschlossen" << endl;
		return 0;
	}
}
Eigentlich müsster er mir doch dann die Bytes mit dem Pin-Status zeigen und den IIC-Mode starten. Allerdings bleibt auf dem Schirm die Meldung "Lese Pin-Status ein" sehr lange stehen.
wayoda
Posts: 362
Joined: Fri Dec 19, 2003 12:00 pm
Location: Wuppertal/Germany

Post by wayoda »

Es muss an den Pins auch was passieren sonst wartet das Programm ewig.

Ist ein Schalter o.ä. angeschlossen?

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

Post by Christoph Jung »

wo ist denn das "memset" ?
wie initialisierst du die ganzen daten? ich lese nur

Code: Select all

char report[8];
wenn du mit der DLL arbeitest, dann musst du auch die entsprechenden Variablen nutzen (.Bytes[], .ReportID, .Value) Oder lädst du die in einer anderen Funktion / Klasse?
Abteilung: Softwareentwicklung
Folge uns auf Twitter
Follow us on twitter
Post Reply