Hallo zusammen!
Ich habe in letzter Zeit mit dem I2C-Bus experimentiert und zwei ATmegas miteinander kommunizieren lassen. Beim ersten Versuch hat der Master dem Slave Daten gesendet, das hat gut funktioniert. Beim zweiten Programm hat der Master den Slave abgefragt und von ihm Daten empfangen, auch das hat funktioniert.
Nun möchte ich aber ein Programm schreiben, wo der Slave Daten empfangen und wenn er abgefragt wird auch Daten senden kann. Sobald der Slave allerdings Daten gesendet hat kann er danach keine mehr empfangen und wenn er schon welche empfangen hat kann er keine mehr senden.
Wie kann ich den Slave Transmitter und den Slave Receiver Mode in einen Programm verwenden?
Hier mein Code vom Slave:
Code:
$regfile = "m48def.dat"


Dim Twi_control As Byte
Dim Twi_status As Byte
Dim Twi_data As Byte


Dim Neuesbyte As Byte
Declare Sub Twi_init_slave
Neuesbyte = 0
On Twi
Twi_data = 0
Call Twi_init_slave


Const Sendebyte = &B10101010

Do
 
   Twi_control = Twcr And &B10000000
   If Twi_control = &B10000000 Then
      Twi_status = Twsr And &B11111000
'TWI-Status überprüfen
      If Twi_status = &H80 Or TWi_status = &H88 Then
'Daten empfangen
            Twi_data = TWDR
            Neuesbyte = 1
       End If
       Twcr = &B11000100
    	elseif Twi_status = &HA8 Or Twi_status = &HB8 Then
'Daten senden
        Twdr = Sendebyte
      End If
   End If
   Twcr = &B11000100
Loop

Sub Twi_init_slave
   Twar = &B10110010
   Twcr = &B01000100
End Sub