Ich hab es jetzt hingekriegt dass der M32 dem M8 etwas senden kann. Allerdings kommen keine Daten an wenn er etwas vom M8 anfordert.
Das ist mein Code bis jetzt. Im Prinzip sind die zwei Wiki Beiträge (transmitter & receiver) zusammengefasst. Aber leider klappt es nicht!Code:$regfile = "m8def.dat" $crystal = 8000000 $baud = 19200 Dim Send_data As Byte ' was gesendet wird Send_data = 5 Declare Sub Twi_init_slave Declare Function Twi_wait() As Byte Dim Twi_control As Byte ' Controlregister lokale kopie Dim Twi_status As Byte Dim Twi_data As Byte Twi_data = 0 Call Twi_init_slave ' TWI aktivieren Do Twi_status = Twi_wait() If Twi_status = &H80 Then Cls Locate 1 , 1 Lcd "Angekommen!" Locate 2 , 1 Lcd "Daten: " ; Twi_data Elseif Twi_status = &HA8 Or Twi_status = &HB8 Then Cls Locate 1 , 1 Lcd "Daten gesendet!" End If Loop End ' TWI als slave aktivieren Sub Twi_init_slave Twsr = 0 ' status und Prescaler auf 0 Twdr = &HFF ' default Twcr = &B00000100 ' erstmal nur TWI aktivieren Twar = &H40 ' Slaveadresse setzen Twcr = &B01000100 ' dann ACK einschalten End Sub Function Twi_wait() As Byte Twi_control = Twcr And &H80 ' Bit7 von Controlregister If Twi_control = &H80 Then Twi_status = Twsr And &HF8 ' Status ' wurde ein Byte geschickt If Twi_status = &H80 Or Twi_status = &H88 Then Twi_data = Twdr ' neue Daten merken ' wird ein Byte angefordert Elseif Twi_status = &HA8 Or Twi_status = &HB8 Then Twdr = Send_data End If Twcr = &B11000100 ' damit es weitergeht End If End Function
Elseif Twi_status = &HA8 Or Twi_status = &HB8 Then <--- das is leider niemals wahr und deshalb gehe ich mal davon aus dass der Slave nichts versendet hat!
Findet jemand den Fehler?
MfG







Zitieren

Lesezeichen