Hallo,
Ich hab auch ein Problem mit einem I²C Portexpander allerdings nicht mit dem MAX7300 sondern mit dem PCA9535D (16bit Portexpander).
Ich kann auf ihn zugreifen und auch auf ihn schreiben nur schalten die Ports nicht auch wenn sie auf Output gesetzt wurden.
Laut Datenblatt muss man erst die Slaveadresse, dann ein Command Byte, und dann die Daten senden.
- Register:
0 = Input Port0
1 = Input Port1
2 = Output Port0 (default: &HFF <hat keinen Einfluss auf Port die als Input konfiguriert sind)
3 = Output Port1 (default: &HFF <hat keinen Einfluss auf Port die als Input konfiguriert sind)
4 = Polarity Inversion Port0 (default: &H00 < keine invertierung)
5 = Polarity Inversion Port1 (default: &H00 < keine invertierung)
6 = Configuration Port0 (default: &HFF = Alles als input)
7 = Configuration Port1 (default: &HFF = Alles als input)
wenn man Register 7 verwendet und 2 Bytes mit daten schreibt dann wird das 2te Datenbyte ins Register 6 geschrieben.
Demnach müsste man um alle ports als Output zu verwenden die Register 6 und 7 auf &H00 setzen, das geht aber nicht warum auch immer.
Hier mal der Code:
Code:$regfile = "m8def.dat" $crystal = 8000000 $baud = 9600 Config Scl = Portc.5 Config Sda = Portc.4 Print "TEST" Print Dim Data0 As Byte Dim Data1 As Byte Dim Command As Byte Dim Slaveaddress As Byte Slaveaddress = 78 Do Input "Data0: " , Data0 Input "Data1: " , Data1 Input "Commandbyte: " , Command Print "sende..." I2cstart I2cwbyte Slaveaddress If Err = 1 Then I2cstop Print "....Error1!" Else I2cwbyte Command I2cwbyte Data0 I2cwbyte Data1 If Err = 1 Then I2cstop Print "....Error2!" Else I2cstop Print "... erfolgreich!" End If End If Wait 2 Loop End
Wäre Froh wenn ihr mit helfen könntet bin schon seit 2 tagen am verzweifeln
Hier noch das Datenblatt vom PCA9535: Klick
Gruß Wolfgang







Zitieren

Lesezeichen