Soooo,
jetzt habe ich mich mal ins Datenblatt des ATMega8 eingegraben, aber noch nicht schlauer:
Ich will 4 Bytes übertragen, wo muß ich die 4-fach Schleife einbauen und welche Statuscodes sind abzufragen (1Byte = A8 2. und 3. B8 letztes C8 ??)
Code:
$regfile = "m8def.dat" ' the used chip
$crystal = 16000000 ' frequency used
Dim Left_array(2) As Byte
Dim Speed_left As Word At Left_array Overlay
Dim Right_array(2) As Byte
Dim Speed_right As Word At Right_array Overlay
Dim Cnt As Byte
Dim Twi_control As Byte
Dim Twi_status As Byte
Declare Sub Twi_init
Enable Interrupts
Call Twi_init
Do
Speed_left = 12345
Speed_right = 54321
' schauen ob TWINT gesetzt ist
Twi_control = Twcr And &H80 ' Bit7 von Controlregister
If Twi_control = &H80 Then
Twi_status = Twsr And &HF8 ' Status anfordern
' will der Master ein Byte haben
If Twi_status = &HA8 Or Twi_status = &HB8 Then
Twdr = Left_array(1) ' neue Daten ausgeben
End If
' TWINT muss immer gelöscht werden, damit es auf dem Bus weiter geht
Twcr = &B11000100 ' TWINT löschen, mit ACK
End If
Loop
Sub Twi_init
Twar = &H70
Twcr = &B01000100
Twsr = 0
Twdr = &HFF
End Sub
Lesezeichen