Hallo an alle Leser!
Ich könnte einen Rat von euch brauchen.
Mein µC (ATmega128a) kommuniziert mit einem Roboter über digitale
Ein/Ausgänge. Eine Nachricht kann maximal 5 Bit breit sein. Nun ist der
µC so viel schneller wie die Robotersteuerung - zumindest beim
Setzten/Sücksetzen der digitalen Ausgänge des Roboters, dass z.b. das
Ausgangssignal Roboters "01101" vom µC auch schnell als "00001"
interpretiert werden, kann, im Falle, dass das niedrigste Bit von der
Robotersteuerung zuerst gesetzt wird. Andersrum also µC --> Roboter ist
die Gefahr kleiner (da der µC die Befehle sehr schnell ausführt) aber
dennoch vorhanden.
Bisher habe ich mir damit geholfen dass ich bei einer Änderung eines
Bits mit über einen Timer eine definierte "sichere" Zeit warte und dann
den Eingang nochmals abfrage. Wirklich professionell ist das jedoch
nicht. Das Rücksetzen der Bits habe ich ebenfalls über einen Timer
gemacht...auch über eine definierte Zeit nachder ich mir sicher war,
dass der Roboter das Signal verarbeitet hat. Die Aufgabe ist nicht sehr
Zeitkritisch.
Trotzdem möchte ich das jetzt professioneller machen und habe mir
gedacht, dass ich das höchste Bit, also Bit 4 (43210) als
"Bestätigungsbit" einsetze. D.h. Dieses wird als letztes Bit gesetzt,
für jede zu übertragende "Nachricht". Der Empfänger wartet auf ein
"high" dieses Bits und fragt anschließend erst die unteren 4 Bit ab.
Dadurch halbiere die mögliche Anzahl der Nachrichten aber das würde mit
4 Bit trotzdem noch ausreichen.
Das Problem ist jetzt dass ich dieses Bit wieder zurücksetzen muss
nachdem der Empfänger die Nachricht erhalten hat. Der Empfänger sendet
also ebenfalls eine Nachricht durch ein High im 5. Bit. Jetzt scheint
das nur noch im Kreis zu gehen weil µC und Roboter nur noch damit
beschäftigt sind sich die Bestätigung zu bestätigen usw. Ich hoffe die
Problematik ist klar und überhaupt, dass jemand bis hier zum Ende liest
:)
Hat jemand mit so einer Thematik schon Erfahrung bzw. einen
Lösungsansatz/Idee für mich?
Ich würde mich jedenfalls sehr freuen!
Viele Grüße und danke,
Daniel