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
Lesezeichen