-
TWI
Hi Leute,
ich habe jetzt schon längere Zeit im RN-Wiki und im Forum geschaut, jedoch keine genaue Lösung zu meiner Frage gefunden. Ich habe das Problem, dass ich nicht weiß, ob ich mit dem TWI Daten an mein Slave-Board senden kann und über meinen Master auch Daten von diesem Board wieder abholen kann, sodass ich ihm Parameter übergebe und vom Slave wieder andere Parameter bekomme?
Ist es also möglich, dass ich von meinem Master an mein Slave was sende und vom Slave wieder etwas zurückbekomme?
MfG
Sven
-
ja............................
-
Hätte jemand ein Bespiel für mich, wie die Programmierung in etwa aussehen müsste oder kann mir jemand sagen, was ich von dem im RN-Wiki beschriebenen Beispielen benutzen müsste?
Gruß,
Sven
-
Hallo,
Du kannst Die Beispiele vom Wiki in sachen TWI usw. genauso übernehmen wie sie da stehen, dann machen die das was dabei steht, ist doch Beispiel genug.
Am Ende einer Wiki-Seite stehen dann meist weiterführende Links, die sich mit dem geleichen Thema beschäftigen.
-
Hab jetzt im Wiki gefunden, dass es ein Master gibt der senden und empfangen kann. Geht dies genauso auch mit einem Slave?
-
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?*
-
Hallo,
gab´s beim I2C-Konzept nicht auch die Möglichkeit, einen Hardware-Interrupt am Master zu benutzen, um Slaves die Möglichkeit zum aktiven Senden zu geben?
Ich meine, da in Bascom schon mal was gesehen zu haben...
Grüße
Torsten
-
Im ursprüngliche Standard ist das nicht zwingend vorgesehen. Es wird aber von manchen I2C-Chips unterstützt, und auch in der Kabelbelegung nach RN-Definition ist eine Leitung dafür vorgesehen.
-
Hi Leute,
ich habe jetzt meine Schaltung soweit aufegbaut und mit Twi versehen, jetzt wollte ich nur noch mal fragen, ob ich nur einzelnen Bytes oder auch Strings über den Bus senden kann?
MfG
Sven
-
Ein string besteht doch aus mehreren einzelnen Bytes. Also ist das kein Problem. Je nachdem, was du machen willst, musst du halt ein Protokoll für die Übertragung verwenden. Dazu gabs in letzter Zeit ziemlich viele threads.