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
Dann kann eigentlich so oder so nix passierenCode: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







Zitieren

Lesezeichen