-
Ja, da ist ein Durcheinander.
Hol' dir von da die aktuellste Version
http://www.oldformation.at/electronic/download/down.htm
"MyI2C.ZIP"
Das ist recht ähnlich, aber eben nicht gleich.
das ist das Slave-Programm das 2313.bas als Muster
Du hast recht, Mytwi.lib ist schon vom Namen her ein Schmarrn gewesen.
Sowohl für das RNSI2C als auch für dieses 2313.bas verwend' ich nun endgültig:
MYI2C.BAS bzw. MYI2C.LIB
Code:
Do
Loadadr I2c_flag , Z
Gosub I2c_get_addr ' I2C Adresse read
Select Case I2c_addr
Case Co1_adr:
Loadadr I2c_flag , Z
Gosub I2c_slave_rx_data ' daten empfangen bis Stop/Rep
Sent_flag = 1
'------------------------------------
' DA1
'------------------------------------
Case Co1_adrr:
'------------------------------------
' DA2
'------------------------------------
Loadadr I2c_flag , Z
Gosub I2c_slave_tx_byte ' daten senden bis NAK
Case Else
I2cinit
'------------------------------------
' DA3
'------------------------------------
End Select
Loop
DA2 is am sichersten, da hast du alle Zeit der Welt.
DA1 hast du Zeit, wenn kein Stop, sondern gleich wieder ein Start gekommen ist.
SOwohl für den RNSI2C.bas als auch für 2313.bas sollte der Master eine Schleife machen
Code:
DO
I2CSTART
I2CWByte adresse
IF ERR = 0 THEN
I2CWBYTE daten
I2CWBYTE daten
I2CWBYTE daten
I2CWBYTE daten
I2CWBYTE daten
else
WAITMS 20 '(in etwa)
END IF
I2CSTOP
LOOP UNTIL ERR = 0
Dann kann eigentlich so oder so nix passieren
-
Merci
Merci vielmals,
ich mach mich an die Arbeit!
Gruß Dirk