PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Slave Transmitter und Slave Receiver Mode



masasibe
26.02.2011, 11:39
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:


$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

mat-sche
26.02.2011, 20:55
Hi!

Schau Dir mal das an: http://www.rn-wissen.de/index.php/TWI_Praxis_Multimaster .

Diese I2C Routine sind echt klasse und funzen genial!
Dank an PicNick!!

Gru MAT