Es gibt 2 arten von Daten-übertrage. Die sogenannte 'Transparante Modus', und die API Modus. Bei die erste gehen die UART-daten gleich von UART-Eingang zum Funkstelle, oder von Funkstelle zu UART-ausgang. (oder bleiben solange im Daten-puffer bis der Funkstelle wieder bereit ist, weil nicht gleichzeitig senden und empfangen kann) Dazu muss R1 ERST in seinen DL und DH register die Adresse von R2 eingestellt haben. Dass muss er im Command-modus tun. Wieder zuruck im Transparante Modus kann er senden so lange als er möchtest. Den Daten-puffer ist aber nicht so riesig und du sollst es nicht voll laufen lassen sonnst gehen die Daten verloren. R2 wird kein Ahnung haben ob die Daten von R1 kommen, oder vielleicht von R3, R4 usw.
Bei die API Modus werden alle Kommandos und Daten zwischen MCU/PC und XBee in API Paketen erfasst. Das Kopf-teil enthält Start-byte, Paket-lange, Paket-art, Paket-ID, gefolgt durch Kommando Art und Kommando Parameter/Data. Es endet mit ein Checksumme zur Fehlererkennung. Auch den XBee sendet sein Status zurück als API Paketen. Diese enthält dann auch die Adresse von den XBee das die Daten gesendet hat. Also kann man die Daten von mehrere Robotern auseinander halten. Kostet aber etwas mehr Programm-aufwand.
Wieso 9 bit? Alle UART Daten sind 8 Bit groß. Dein 9-te Bit ist vielleicht das Parität bit oder ein extra Stop-bit. Das ist aber nicht notwendig, kann jedenfalls kein Daten-bit enthalten, und ist nur zur Bit-fehler Erkennung und (2te Stopbit zur) Baudtakt-fehler Ausgleichung. Werten großer als 255 (also mehr als 8 bit lang) muss du aufteilen in Bytes in dein Programm, und dann wieder zusammen rechnen in den andere Robotern. Das geht so bei fast alle Kommunikationsarten die auf Bytes orientiert sind. I2C ebenso.Dann noch zu UART: Ich bin dann auf 9 Bit beschränkt? Das wird ganz schön schwierig wenn ich alle Daten in ein Sendekommando packen will :/ Wie kann ich dann eigentlich Werte über 512 übertragen? Oder habe ich da etwas falsch verstanden?
Lesezeichen