Hallo Thomas,
danke für die Info. Die Frage die aber noch immer im Raum steht, brauche ich sowas oder regelt das der Treiber beim Zugriff?
@rolf;
Ich habe mir das Demo "AVR_UsrDataI2C" angeschaut, aber ich verstehe hier etwas nicht ganz.
Code
UserDevice UsrDevInp(adr : word) : byte;
var ok : boolean;
inp : byte;
begin
// DisableInts;
(* because of a possible previous write access *)
(* the I2Cout function can fail upto 10msec *)
(* and a timeout loop must be implemented *)
(* don't forget your watchdog *)
SetSysTimer(Timer1, 2);
repeat
ok:= I2Cout(I2Cadr +hi(adr), lo(adr)); // set the read address
until isSysTimerZero(Timer1) or ok;
if ok then
I2Cinp(I2Cadr, inp); // read the byte
return(inp);
else
// error ...
endif;
// EnableInts;
return($ff);
end;
Warum wird bei "I2Cout()", die I2C-Adresse mit dem hi-Byte vom "adr" addiert? Ist das eine besondere Funktionsweise? An dieser stelle sollte doch nur die Slave-Adresse liegen oder?
Oder ist das irgendeine Besonderheit wegen der WordAdresse?
Thorsten
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.