Atmega sendet 16bit Zahlen über UART. Warum kommen Daten richtig an??

Gast #2497879
Lesenswert?
• ▲
▼
Hi.
Folgender Aufbau: Atmega16 - UART - FT232 - USB - PC
Der Atmega macht nichts anderes als permanent Daten über UART 
auszugeben. Dazu schreibe ich die ganze Zeit Daten ins UDR Register.
Ich verschicke immer 16bit Zahlen in 1Byte Paketen und die Werte kommen 
immer richtig in Matlab an. Ich sende das High und low Byte einzelnd. 
(von uint_16) Ich empfange in Matlab auch in dem Format. Komischerweise 
kommen in Matlab die richtigen Werte an obwohl ich nicht warte oder 
sage, dass der Atmega erst das High und dann Low Byte oder umgekehrt 
senden soll. Eigentlich müsste Matlab mal zuerst das H Byte und dann das 
L Byte empfangen und mal umgekehrt.... Daher die Frage ob H und L Byte 
in uint_16 kodiert sind. Oder warum kommen immer richtige Werte?
Ich bin nicht zu faul ein Handshake zu programmieren. Ich hab es nur so 
gezestet um zu sehen ob überhaupt Daten ankommen. Aber vielleocht ist 
das Handshake ja nicht nötig?
#2497958
Lesenswert?
• ▲
▼
klaus schrieb:

> L Byte empfangen und mal umgekehrt.... Daher die Frage ob H und L Byte
> in uint_16 kodiert sind. Oder warum kommen immer richtige Werte?

Weil du wahrscheinlich dein Matlab Programm gestartet hast, ehe der µC 
gestartet wird. Damit schickt der µC als erstes, wie erwartet das 
High-Byte und der Empfangscode ordnet das (weil es das erste empfangene 
Byte ist) auch richtig zu. Und von da an geht es immer abwechselnd 
weiter. Solange da nix dazwischen kommt, bleiben die beiden auch 
synchron.

Aber lass mal alles laufen, zieh das Kabel ab und stecke es wieder an. 
Die Chancen sind ganz gut, dass du damit die Synchronizität der beiden 
Rechner durcheinanderbringst. Und ab dann werden dann alles Bytes falsch 
rum zugeordnet.

> Ich bin nicht zu faul ein Handshake zu programmieren. Ich hab es nur so
> gezestet um zu sehen ob überhaupt Daten ankommen. Aber vielleocht ist
> das Handshake ja nicht nötig?

Wenn du es sicher haben willst, kommst du ohne ein Protokoll nicht aus.
(Handshake ist was anderes. Du brauchst ein Protokoll)

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.