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
Lesezeichen