Hi,

bin gerade dabei, einen XMega als TWI-Slave zu verwenden. Das Empfangen von Daten funktioniert auch, jedoch weiß ich nicht so recht, wie ich Daten an den Master zurücksenden soll ... Das DB finde ich diesbezüglich nicht sehr leicht verständlich... Vielleicht kann mir ja jemand helfen. Hier mein aktuelles Programm zum Empfangen:

Code:
$regfile = "xm32a4def.dat"
$crystal = 32000000
$framesize = 100
$swstack = 100
$hwstack = 100


$lib "xmega.lib"
$external _xmegafix_clear
$external _xmegafix_rol_r1014


Config Osc = Disabled , 32mhzosc = Enabled
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1



Config Porta.2 = Output
Config Porta.3 = Output
Config Porta.4 = Output
Config Porta.5 = Output

Porta.2 = 0
Porta.3 = 0
Porta.4 = 0
Porta.5 = 0


Twie_slave_ctrla = &B11111001
Twie_slave_addr = &H50


On Twie_slave Twi_int
Enable Twie_slave , Hi


Dim Rbyte As Byte



Config Priority = Static , Vector = Application , Lo = Enabled , Med = Enabled , Hi = Enabled
Enable Interrupts




Do


   Toggle Porta.2
   Waitms 500


Loop

End


Twi_int:
   Toggle Porta.3

   If Twie_slave_status.6 = 1 Then                          'Valid Address has been detected
       Twie_slave_ctrlb = &B00000011                        'Send Address Ack
   End If

   If Twie_slave_status.7 = 1 Then                          'Byte successful received
      Rbyte = Twie_slave_data
   End If

Return
Ob der Master lesen oder Schreiben will erfahre ich durch das DIR-Bit (TWIE_Slave_Status.1). Aber wie gehts dann weiter? Einfach nur die Daten auf den Bus schreiben funktioniert irgendwie nicht...

Wäre nett, wenn jemand sich dazu äußern würde.

Gruß
Chris