
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
Meine Vermutung: Wenn Master die function 'senden()' ohne Verzoegerung mit voller Geschwindikeit der main - Schleife immer wieder aufruft wird der 8 Bytes grosse RS232 Empfangspuffer des Slave schneller gefuellt als das Empfangsprogramm dort die Daten auslesen und verarbeiten kann. Solange kein Platz im Empfanmgspuffer (wieder) freigeworden ist, gehen empfangene Zeichen verloren, Master und Slave sind nicht mehr snyhron und die Anzeige flakcert. Versuch mal: > function senden() > put sync > put grün > put weis > put musik PAUSE xyz ' > end function Wert fuer 'xyz' must ausprobieren z.B. erst 100 oder 50, dann 75 oder 25, dann 62 oder 12, usw. Der Trick mit dem Sync-Byte ist dann nicht noetig, wodurch der Slave auch etwas schneller wird. Statt >if rxd = true then > get x > end if kannst direkt schreiben IF rxd THEN GET x Bei Erfolg würd mich mal deine Projektbeschreibung interessieren, vielleicht mit Hardwarebeschreibung zum Nachbauen ? Klingt jedenfalls interessant.... > Hallo Ihr Helfer! > Vielleicht könnt Ihr auch mir helfen. > > Ich habe 2 Controlls miteinander verbunden (TXD an RXD der anderen). Es soll ein Master-Slave-System sein. Es geht eigentlich um die Übertragung von 3 Werten von Master nach Slave, jeweils Bytes. 2 Bytes beschreiben die Helligkeit von (grünen und weißen) LEDs, die der Slave über DA1 & DA2 ansteuern soll. Der 3te Werte wird benötigt um eine Musiksteuerung zu realisieren (es werden die Werte 2,3,4,5) übermittelt). > > Nun mein Problem: Die Werte kommen durcheinander. Das bedeutet, das die grüne Helligkeit schon mal die(zB) "3" der Musiksteuerung erhält und dann grün von 255 kurz auf 3 runtergeht und man das natürlich als Flackern des Lichts wahrnimmt. > Ich habe schon probiert mit einem Syncronisationsbyte zu arbeiten. D.H. das erst ein Byte gesendet wird, ddamit der Slave weiß: "ah jetzt kommen drei Werte hintereinander und zwar grün,weis,musik!" > Danach war es schon besser, aber es flackert manchmal immer noch! > > Wie bekomme ich es nun hin, dass wirklich immer der Slave weiß, "Das ist der Wert für grün, das der für weiß, das der für Musik!!!!!??????????? > > Hier die Programmausschnitte: > > Hauptprogramm mit "sendefunction" > > function senden() > put sync > put grün > put weis > put musik > end function > > (diese function wird immerwider in der "main" aufgerufen um die aktuellen Werte zu senden) > > Hier das Programm des Slave: > > '------Schnittstellenabfrage-------------------- > if rxd = true then > get x > end if > if x = 123 then '123 ist das Syncbyte > goto Sprung > else > goto main > end if > > > #Sprung > if rxd = true then > get zeitgrün > end if > if rxd = true then > get zeitweis > end if > if rxd = true then > get musik > end if > > > Kann mir jemand helfen???? > > Gruß ALEX |
| Antwort schreiben |