Ich habe jetzt eine sehr einfache und zufriedenstellende Lösung gefunden die sehr schnell läuft. Erst wird ein Byte mit der Adresse empfangen. Diese ist entweder 253, 254 oder 255. Danach wird das Byte zur Motorsteuerung übertragen (dieses Byte wird immer zwischen 0 und 252 liegen). Ich glaube ich werde auch ohne Checksum keine Probleme mit Übertragungsfehlern bekommen. Wenn ich mit 200Hz Daten übertrage läuft mein µC statt mit 357 Hz noch mit 320 Hz. Das ist gut genug, da ich wohl nur mit max 10Hz Daten übertragen werde.
Wenn ich die Baud Rate auf 115200 erhöhe sind es sogar nur 12 Hz Unterschied.
Code:$regfile = "m32def.dat" $framesize = 64 $swstack = 64 $hwstack = 64 $crystal = 16000000 $baud = 38400 Config Serialin = Buffered , Size = 20 Enable Interrupts Dim Recipient As Byte Dim Message1 As Byte Dim Message2 As Byte Dim Message3 As Byte Const Address1 = 253 Const Address2 = 254 Const Address3 = 255 Do If Ischarwaiting() > 0 Then If Recipient <> Address1 And Recipient <> Address2 And Recipient <> Address3 Then Inputbin Recipient End If End If If Recipient = Address1 Then If Ischarwaiting() > 0 Then Inputbin Message1 Print Recipient ; " " ; Message1 Recipient = 0 End If End If If Recipient = Address2 Then If Ischarwaiting() > 0 Then Inputbin Message2 print recipient;" ";message2 Recipient = 0 End If End If If Recipient = Address3 Then If Ischarwaiting() > 0 Then Inputbin Message3 Print Recipient ; " " ; Message3 Recipient = 0 End If End If Loop






Zitieren

Lesezeichen