Zitat von Frank
So noch eine Berichtigung: Das die I2C-Slave Lib nicht mit dem I2CSEND Befehl zurecht kam, lag auch an einem Bug in den normalen I2C-Befehlen von Bascom.
------
Bei der Bascom Lib ist es generell so das das Clock Signal vom Slave auf Low gelegt wird bis die Bearbeitung der Basic-Routine 'I2c_master_has_data' abgeschlossen ist. Wenn dies also zu lange dauert, dann muss der Master warten. Wenn das Protokoll richtig verwendet wird, ist das auch kein Problem. Das Hauptprogramm stoppt dann nur, während die Funktion 'I2c_master_has_data' abgearbeitet wird.
------
Aber wie gesagt, wenn der Master nicht wartet, dann gibt es ein Problem!
Das witzige daran ist, das selbst die I2C-bascom Funktionen sich offenbar nicht korrekt daran halten. Zwar kommt es hier nicht zu einem "hängenbleiben", aber es werden I2C-Übertragungen übergangen (kommen also nicht beim Slave an). .