-> Hier kostenlos registrieren
Hallo
ich habe hier ein Code den ich mit drei CPUs ausprobiert habe und habe die Daten kreuz und quer geschickt und ausgelesen. Das Ganze funktioniert auch ohne Probleme. Die Frage ist ob man nach der Fehlermeldung "80C0" darauf vertraut, dass die Daten verschickt werden sobald der Bus wieder frei ist. Ich bin auf eure Antworten gespannt.
Damit Req gesetzt wird muss ja der letzte Aufruf busy = 0 setzten. Wenn aber der Aufruf davor mit der Übertragung noch nicht fertig ist dann wird ja der Req nochmal "eins" gesetzt.
Also wie genau das Ganze abläuft ist mir noch nicht ganz klar. ABER ES FUNKT!
Danke
ich habe hier ein Code den ich mit drei CPUs ausprobiert habe und habe die Daten kreuz und quer geschickt und ausgelesen. Das Ganze funktioniert auch ohne Probleme. Die Frage ist ob man nach der Fehlermeldung "80C0" darauf vertraut, dass die Daten verschickt werden sobald der Bus wieder frei ist. Ich bin auf eure Antworten gespannt.
Code:
IF #busy = 0 THEN
#req:=1;
ELSE
#req:=0;
END_IF;
#ret:=X_GET(REQ:=#req,
CONT:=false,
DEST_ID:=3,
VAR_ADDR:=P#DB1.DBX0.0 INT 32,
BUSY=>#busy,
RD=>P#DB10.DBX0.0 INT 32);
#ret:=X_GET(REQ:=#req,
CONT:=false,
DEST_ID:=3,
VAR_ADDR:=P#DB1.DBX64.0 INT 32,
BUSY=>#busy,
RD=>P#DB10.DBX64.0 INT 32);
#ret:=X_GET(REQ:=#req,
CONT:=false,
DEST_ID:=4,
VAR_ADDR:=P#DB1.DBX0.0 INT 32,
BUSY=>#busy,
RD=>P#DB10.DBX130.0 INT 32);
#ret:=X_GET(REQ:=#req,
CONT:=false,
DEST_ID:=4,
VAR_ADDR:=P#DB1.DBX64.0 INT 32,
BUSY=>#busy,
RD=>P#DB10.DBX194.0 INT 32);
#ret:=X_PUT(REQ:=#req,
CONT:=false,
DEST_ID:=3,
VAR_ADDR:=P#DB1.DBX130.0 INT 32,
BUSY=>#busy,
SD:=P#DB10.DBX260.0 INT 32);
#ret:=X_PUT(REQ:=#req,
CONT:=false,
DEST_ID:=3,
VAR_ADDR:=P#DB1.DBX194.0 INT 32,
BUSY=>#busy,
SD:=P#DB10.DBX324.0 INT 32);
#ret:=X_PUT(REQ:=#req,
CONT:=false,
DEST_ID:=4,
VAR_ADDR:=P#DB1.DBX130.0 INT 32,
BUSY=>#busy,
SD:=P#DB10.DBX390.0 INT 32);
#ret:=X_PUT(REQ:=#req,
CONT:=false,
DEST_ID:=4,
VAR_ADDR:=P#DB1.DBX194.0 INT 32,
BUSY=>#busy,
SD:=P#DB10.DBX454.0 INT 32);
Damit Req gesetzt wird muss ja der letzte Aufruf busy = 0 setzten. Wenn aber der Aufruf davor mit der Übertragung noch nicht fertig ist dann wird ja der Req nochmal "eins" gesetzt.
Also wie genau das Ganze abläuft ist mir noch nicht ganz klar. ABER ES FUNKT!
Danke