Hallo Herbert,
richtig, die Pull-Up-Widerstände sind im ATMEL integriert.
Beispiel: LM75 auslesen:
$id_xbee = 39041;
XBee_SendText($id_xbee,$id, "B".chr(0))
Zur Auswertung sämtlicher Funktionen wird es ein IPS-Modul geben.
MST
PS: Beispiel für PCF8574 - Rest steht in im PDF
Aufbau des Strings:
Erstmal zwei Bytes an den Atmel senden: „B“ „Anzahl“ .
„B“ ist der Befehl für den Zugriff auf den IIC-Bus und „Anzahl“
ist die darauf folgende Anzahl Bytes (ohne „B“ und das Anzahlbyte!)
Danach der IIC-String:
Byte 1) Anzahl zu sendenden Datenbytes OHNE Slaveadresse
Byte 2) Slaveadresse mit nicht gesetztem RW-Bit
Byte 3) ab hier die Anzahl Datenbytes (n)
Byte 3+n) eine 0 für STOP-Condition, eine 1 für RESTART-Condition
Byte 4+n) Anzahl zu empfangende Datenbytes OHNE Slaveadresse
Byte 5+n) Slaveadresse mit gesetztem RW-Bit
Byte 6+n) eine 0 für STOP-Condition
Der Controller antwortet nach Fertigstellung mit einem „G“ wenn Daten vorliegen
oder mit einem „H“ wenn keine Daten vorliegen oder ein Fehler aufgetreten ist.
Zu „G“:
Auf das „G“ folgen noch Bytes, dies sind die Daten, die vom IIC-Bus
gelesen wurden sofern gelesen werden sollte.
Zu „H“:
-wenn keine Daten gelesen werden sollten, aber auch kein Fehler vorliegt, folgt eine 1
-antwortete der Slave nicht /Adressfehler), folgt eine 2
-bei einem Busfehler (welcher Art auch immer) folgt eine 3
-wurden weniger Bytes empfangen als gewünscht, folgt eine 4
Beispiel für PCF8574, ein Byte schreiben:
„B“ „4“ „1“ „0100 A2 A1 A0 0“ „Wert für PCF8574“ „0“
(B = Befehl Zugriff auf IIC)
(4 = Anzahl folgende Bytes)
(1 = ein Datenbyte)
(0100 A2 A1 A0 0 = Slaveadresse mit gelöschtem RW-Bit, also schreiben)
(Wert für PCF8574 = das zu schreibende Datenbyte)
(0 = STOP-Condition)
Der Controller antwortet mit zwei Bytes: „H“ „1“
Beispiel für PCF8574, ein Byte lesen:
„B“ „3“ „1“ „0100 A2 A1 A0 1“ „0“
(B = Befehl Zugriff auf IIC)
(3 = Anzahl folgende Bytes)
(1 = ein Datenbyte)
(0100 A2 A1 A0 1 = Slaveadresse mit gesetztem RW-Bit, also lesen)
(0 = STOP-Condition)
Der Controller antwortet mit zwei Bytes: „G“ „Wert“
Beispiel für PCF8574, ein Byte schreiben und danach lesen:
„B“ „7“ „1“ „0100 A2 A1 A0 0“ „Wert für PCF8574“ „1“ „1“ „0100 A2 A1 A0 1“ „0“
(B = Befehl Zugriff auf IIC)
(7 = Anzahl folgende Bytes)
(1 = ein Datenbyte)
(0100 A2 A1 A0 0 = Slaveadresse mit gelöschtem RW-Bit, also schreiben)
(Wert für PCF8574 = das zu schreibende Datenbyte)
(1 = RESTART-Condition)
(1 = Anzahl folgende Bytes)
(0100 A2 A1 A0 0 = Slaveadresse mit gesetztem RW-Bit, also lesen)
(0 = STOP-Condition)
Der Controller antwortet mit zwei Bytes: „G“ „gelesener Wert“