Es gibt auch eine sog. Multimaster Lösung oder
Du "Pollst" den/die slaves in regelmäßigen Abständen vom Master aus an und fragst diese ab.
Solange müssen die Slaves dann eben die Resultate zwischenspeichern.
In Bascom sind auch einige Beispiele dabei.
Allerdings habe ich noch keinen Slave selbst programmiert sondern fertige Bausteine z.B. PCF8574 verwendet.
Als erstes braucht du ein Array (im Master) aus BYTE Werten, in welchen Du die Antworten ablegen kannst.
An erster Stelle kommt in das Array Dein Abfragebefehl (kann auch mehrere Bytes haben)
Mit
Code:
I2CRECEIVE slave, var , b2W, b2R
Code:
I2creceive &H40 , Buf(1) , 2 , 1 'send two bytes and receive one byte
gibst Du die Adresse des Slaves und den Variablennamen des Array an,
nun noch wieviele Bytes (aus dem Array) gesendet werden sollen (also dein Abfragebefehl) und wieviele Bytes empfangen werden sollen.
Der Befehl überschreibt dann die Inhalte des Arrays mit den empfangenen Daten vom Slave.
Mit dem einen Befehl wird also gesendet und empfangen. Einfach so auf daten Warten ist nicht möglich, da die Slaves erst mal eine Aufforderung sum senden erhalten müssen.
*KLARSOWEIT?*
Lesezeichen