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







Zitieren

Lesezeichen