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:
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...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
Wäre nett, wenn jemand sich dazu äußern würde.
Gruß
Chris







Zitieren

Lesezeichen