SPI Datenaustausch mit Java

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
bender
Posts: 4
Joined: Tue Jan 03, 2006 8:34 am

SPI Datenaustausch mit Java

Post by bender »

Hallo,

ich benutze das Java-API http://www.wagner-ibw.de/iowj.html
und möchte Daten über SPI mit einem AVR Controller austauschen.
Die Ausgabe funktioniert prima:

Code: Select all

			dev24 = devs.getIow24Device();

			int[] initBuf = { 0x08, 0x01, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00 };
			
			long anz = dev24.writeReport( 1, initBuf );
			
			System.out.println( "SPI Init returns: " + anz );

			int[] dataBuf = { 0x09, 0x06, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA };
		
			anz = dev24.writeReport( 1, dataBuf );

			System.out.println( "SPI Data returns: " + anz );
Es werden alle Daten korrekt an den AVR gesendet und 'anz' ist 8.

Jetzt weiß ich aber nicht, wie ich auf die vom AVR-Controller gesendeten Daten zugreifen muß.

Code: Select all

		int[] readBuf = dev24.readReport( 2 );
funktioniert leider nicht - readBuf hat die Länge 0.
Kann mir da jemand helfen?
Achim
Guido Körber
Site Admin
Posts: 2876
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

Kein Wunder, ein Interface 2 gibt es nicht. Die Antwort kommt auch über Interface 1.
bender
Posts: 4
Joined: Tue Jan 03, 2006 8:34 am

Post by bender »

Uups, da habe ich wohl die Doku falsch gelesen.
:oops:

Danke für die schnelle Antwort

Achim
towaibw
Posts: 198
Joined: Sat Dec 27, 2003 10:55 pm
Location: Berlin / Germany
Contact:

SPI

Post by towaibw »

Hi Achim,

gut zu lesen, das doch mehr iowj nutzen, als ich Feedback erhalte ;-).
Noch besser ist, daß du SPI nutzen möchte, weil ich so hoffe, daß die derzeitig rudimentär vorhandene SPI Unterstützung (faktisch nicht vorhanden ;-) mit deiner Hilfe doch benutzbar wird. Selbst mit dem Hinweis von Herrn Körber kann es sein, das du keine Report lesen kannst, weil bereits ein Lese-Thread läuft, der die Daten verwirft, da ihm nicht bekannt ist, das sich dafür jemand interessiert. Ich würde dich bitten, mir mal zu mailen, was du bereits programmiert hast und welchen SPI-Chip du verwendest. Falls auch du dir Gedanken machen möchtes, sind folgende Dateien interessant: SpecialModeFunction.java, SPI.java. Bei den I2C Beispielen kann man sich ansehen, wie das dann prinzipell funktionieren müßte.

Gruß
Thomas
bender
Posts: 4
Joined: Tue Jan 03, 2006 8:34 am

Post by bender »

Hallo Thomas,

ich kanns frühestens heute abend ausprobieren. Allerdings bin ich der Meinung, es bereits mit dem Interface 1 probiert zu haben und das Programm blockierte damit. Bin mir aber nicht ganz sicher.
Ich werde mich mit dem Thema (und Deinem Wunsch) so schnell wie möglich beschäftigen und Dir dann an Deine EMail-Adresse mailen.
Viele Grüsse
Achim
Guido Körber
Site Admin
Posts: 2876
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

Blockieren hört sich nicht ganz falsch an. Wenn keine Daten kommen bleibt die Abfrage halt hängen.
Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

Eine Leseaktion auf dem SPI ist immer mit einer Schreibaktion gepaart.
Genaugenommen ist Lesen und Schreiben ein und das selbe. Beim Lesen schreibt man ein leeres Paket. Sozusagen der Auftrag "Hier kommen ein paar leere Bytes, fuell mir die mal auf".
Entsprechend muss man immer erst auf die Special Mode Funktion SPI schreiben und danach sofort lesen.
bender
Posts: 4
Joined: Tue Jan 03, 2006 8:34 am

Post by bender »

Robert Marquardt wrote:Entsprechend muss man immer erst auf die Special Mode Funktion SPI schreiben und danach sofort lesen.
Genau. Nur wie wird gelesen? "dev24.readReport( 1 )" funktioniert ja nicht.
Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

Bleibt der Aufruf haengen? Wenn ja dann ist das wahrscheinlich eher ein Hardwareproblem.
Ansonsten muss towaibw weiterhelfen, da ich seine Klassen mangels tiefergehender Java-Kenntnisse nicht verstehe.
towaibw
Posts: 198
Joined: Sat Dec 27, 2003 10:55 pm
Location: Berlin / Germany
Contact:

Post by towaibw »

Mache ich doch schon ;-) (nur nicht hier im Forum, das es für die Allgemeinheit doch nicht so interessant sein wird. Erfolg wird natürlich gepostet!).
Noch mal für alle: dev24.readReport(1) darf von keinem augerufen werden. Das handelt ein Thread schon intern ab. Da stimmt noch etwas nicht mit der Sichtbarkeit dieser Methode (ist ja auch erst 0.9.3 ;-)
towaibw
Posts: 198
Joined: Sat Dec 27, 2003 10:55 pm
Location: Berlin / Germany
Contact:

Teilerfolg

Post by towaibw »

Habe die Special Mode Function SPI in iowj überarbeitet und es sieht bis jetzt gut aus. Als SPI Referenz-Chip habe ich mir einen M95020 (2Kbit EEPROM) ausgesucht. Da wird dann nicht nur das Lesen sondern auch das Schreiben benötigt. In iowj Releasse 0.9.4 wird die SPI-Unterstützung enthalten sein.

Thomas
Post Reply