Hallo Günter,
das ist ungetestet, sollte aber so funktionieren:
Code:
$regfile = "m8def.dat" ' the used chip
$crystal = 16000000 ' frequency used
Dim Data_array(4) As Byte
Dim Speed_left As Word At Data_array Overlay
Dim Speed_right As Word At Data_array + 2 Overlay
Dim Cnt As Byte
Dim Twi_control As Byte
Dim Twi_status As Byte
Dim I As Byte
Declare Sub Twi_init
Enable Interrupts
Call Twi_init
Speed_left = 12345
Speed_right = 54321
Do
Twi_control = Twcr And &H80 ' Bit7 von Controlregister auslesen
If Twi_control = &H80 Then
Twi_status = Twsr And &HF8 ' Status ->Bit3 bis Bit7
Select Case Twi_status
Case &H60 : 'Wir sind gemeint
Twcr = &B11000100 ' TWINT löschen, erzeugt ACK
Case &HA8: 'Master will Byte haben
I = 1
Twdr = Data_array(i)
Twcr = &B11000100
Case &HB8: 'Master Will Weiteres Byte Haben
Incr I
Twdr = Data_array(i)
Twcr = &B11000100
End Select
End If
Loop
Sub Twi_init
Twar = &H70
Twcr = &B01000100
Twsr = 0
Twdr = &HFF
End Sub
Edit: jetzt mal den Master 4 Bytes abholen lassen...
Lesezeichen