www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Datenkodiereung für Uart


Autor: Tilo L. (katagia)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich soll für ein Praktikum einen kleinen Datenlogger/Frequenzgenerator
programmieren. Eine Abtastrate von 1kHz ist ausreichend. Die
Messdaten sollen über uart an einen PC geschickt werden, der die Daten
dann anzeigt. Der Frequenzgenertor soll sinus/rechteck/dreieck ausgeben.
Die Steuerung soll über den PC erfolgen.

An und für sich ein recht überschaubares Projekt.

Im Moment mache ich mir darüber Gedanken, wie die Daten über Uart
transportiert werden sollen. Ich spiele vor einigen Wochen mit
einer SD-Card herum. Da war es einfach. Sobald CS low war, wusste
die Karte, dass die Übertragung beginnt. Bei uart habe ich aber nur TX
und RX. Mein Problem ist, dass ich noch nicht so genau weiß, wie ich
ein einen Start-Code erzeugen soll, damit das Programm erkennen kann,
wo ein Befehl los geht.

Ich kann mich noch an "Bitstufing" erinnern, wodurch dafür gesorgt wird,
dass eine bestimmte Zeichenfolge nur im Start-Code vorkommt.

CRC sagt mir auch noch etwas. Dann müsste ich aber das "CRC-Fenster" 
über
den Empfangpuffer schieben, bis ein Treffer gelandet wird. Ich denke das
ist verhältnismäßig rechenintensiv.

Den Befehl aus mehreren Bytes wollte ich mit einer Union/Struct
in die Datentypen umwandeln, die ich brauche. Das würde mit Bitstuffing
nicht mehr so einfach funktionieren.

Habt ihr ein paar Ansätze für mich?

Vielen Dank,

Tilo

Autor: Oops (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das allereinfachste wäre vielleicht die Daten in ASCII umzuwandeln und 
dann zu übertragen. Auf die Weise kommen nur 0-9 und A-F in den 
Nutzdaten vor.
Dann kannst Du die restlichen Zeichen als Steuerworte benutzen. 
Allerdings sind die Daten dann doppelt so gross und auf der Gegenstelle 
musst Du sie wieder zurückwandeln.

Gruss
Oops

Autor: Oops (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bit-Stuffing hat hier nichts damit zu tun.
Das macht eher Sinn an Stellen wo der Takt aus dem Datensignal zu 
reproduzieren sein soll.

CRC wäre aber sinnvoll und mit der oben genannten Methode zu 
kombinieren.

Gruss
Oops

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also auf Byte-Ebene erledigt das die UART schon selbst (Startbit - 
Stopbit).
Für Deine gesamte Übertragung solltest Du Dir ein Protokoll ausdenken, 
das Deinen Anforderungen genügt. Entweder Dein übertragene String 
enthält an einer festen Position eine Längenangabe des gesamtem Strings 
oder Du benutzt Start und Endkennungen (Steuerzeichen: SOF, EOF). Das 
Problem dabei ist, dass ein Daten-Zeichen, welches zufälligerweise SOF 
oder EOF ist, durch was anderes ersetzt werden muss!

Autor: Jörg S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Bei uart habe ich aber nur TX und RX.
Ein paar mehr Signale gibt's da u.u. schon noch (DSR, DTR, RTS...)

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Bei uart habe ich aber nur TX und RX.
>Ein paar mehr Signale gibt's da u.u. schon noch (DSR, DTR, RTS...)
TX und RX reichen prinzipiell aber vollkommen aus!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.