Hallo, hatte ein ähnliches Problem.
Ich poste hier mal meinen Code, vielleicht hilft er ja irgendjemand. Er ist eigentlich ziemlich scmutzig programmiert aber er läuft. Dazu noch eine kurze Erklärung zu meinem I2C signal: Startbit, Adresse des Slave, Länge des Datenpackets, Daten, Stopbit. BIT 7 wird zuerst übertragen, Die software wartet auf startbedingung, ließt dann aus, gibt auf RS232 aus, macht ne kleine pause (So häufig kommen keine daten bei mir), Stopbit wird nicht beachtet, da die länge ja übermittelt wird und ich so rechtzeitig aufhören kann.
Es ging darum diese daten zu loggen (RS232) Franks mini projekt hat mir ein bisschen weitergeholfen.
Code:$regfile = "m128def.dat" $crystal = 16000000 $baud = 57600 Config Portd = Input Cl Alias Pind.0 'Clock an Pind.0 Da Alias Pind.1 'SDA an Pind.1 On Int1 Startchk Config Int1 = Falling Enable Interrupts Dim Adr As Byte Dim Leng As Byte Dim Temp As Byte Dim C As Byte Dim I As Byte Dim J As Byte Dim St(10) As Byte For I = 1 To 8 'String leer machen zum ersten mal St(i) = " " Next Enable Int1 Do nop Loop End Startchk: If Cl = 1 Then 'Startbedingung: fallende flanke an SDA&SCL=1 Disable Int1 Gosub Rxdata End If Waitms 1000 Enable Int1 Return Rxdata: 'Adresse immer 70H Adr = 0 'Wert zurücksetzten C = 128 For I = 1 To 8 Do Loop Until Cl = 0 Do Loop Until Cl = 1 If Da = 1 Then Adr = Adr + C C = C / 2 Next 'ack überspringen Gosub Jmpack 'Länge des strings Leng = 0 'Wert zurücksetzten C = 128 For I = 1 To 8 Do Loop Until Cl = 0 Do Loop Until Cl = 1 If Da = 1 Then Leng = Leng + C nop C = C / 2 Next 'ack überspringen Gosub Jmpack 'String For J = 1 To Leng Temp = 0 C = 128 For I = 1 To 8 Do Loop Until Cl = 0 Do Loop Until Cl = 1 If Da = 1 Then Temp = Temp + C nop C = C / 2 Next St(j) = Temp 'ack überspringen Gosub Jmpack Next Print Chr(12); Print "Adress: " ; Hex(adr) ; "h " ; "Length: " ; Leng ; For I = 1 To Leng Print Chr(st(i)); Next Print For I = 1 To 8 'String komplett leer machen St(i) = " " Next Return Jmpack: 'ack überspringen Do Loop Until Cl = 0 Do Loop Until Cl = 1 Return







Zitieren

Lesezeichen