mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik protokoll


Autor: Gill (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo.

was fur protokoll bzw.start und stopbits kann ich verwenden zwischen 
sender und empfanger.
die daten werden von empfanger im binarcode
standig gesendet.die daten werden dann fsk moduliert
und 900MHz ubertragen.wie kann ich auf der empfangsseite rausfinden wo 
der anfang und wo das ende ist.|10101111|01001001|00110101| usw.
wenn ich den empfanger aus und einschalte weiss ich nicht mehr wo mein 
anfang und das ende ist.es konnen  in einem Byte ale moglichen 
binarvarianten vorkommen.wie kann ich den anfang und ende markieren oder 
nur den anfang.
z.b.
startbytes|1 Databyte.|2. Databyte|...6.databyte|
startbytes|7 databyte |8.dada     |...12 databyte|

Autor: Retro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das beste währe eine festgelegte 1/0-Folge die sonst niemals vorkommen 
kann. So als Anfangsmarke z.B. "00000000".

Autor: Weide (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Gill,

deshalb nutzt man auch unter anderem den ASCII-Zeichensatz. Da können 
Zahlen von Buchstaben oder Steuerzeichen eindeutig unterschieden werden. 
Die Zahl zwei z.B. ist damit als Dezimalwert "52" (34h) festgelegt, die 
Zahl drei als Dezimalwert "53"(35h) usw.. Um eine zweistellige Zahl zu 
übermitteln, mußt Du jetzt zwar zwei (8-Bit)Binärfolgen übermitteln, das 
Protokoll wird länger, aber du hast jetzt die Möglichkeit, Steuerzeichen 
(Dein Startbyte) zu setzen, z.B. den Buchstaben "A", der dem Dezimalwert 
"65" entspricht. Oft werden andere Steuerzeichen verwendet, z.B. das "<" 
(Dezimal "60") und am Ende ein "Carriage Return" (da weiß ich jetzt den 
Wert nicht).
Die Umsetzung im Mikrokontroller ist eigentlich nicht so schwer wie's im 
Moment scheint. Man muß ja nicht den Ganzen ASCII Zeichensatz parat 
haben, sondern nur das Startzeichen und eventuell das Abschlusszeichen 
zum Vergleich und natürlich die Zahlen von 0 bis 9 , aber die braucht 
man zur Not noch nicht mal
als Tabelle abspeichern, sondern kann sie sich errechnen (Eingegangener 
Wert minus 50).

Gruß Weide

PS: ASCII-Tabellen findest Du zuhauf im Internet

Autor: Siegfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich halte das Vorhaben für fast nicht durchführbar.

Wenn die Bitlängen alle gleich sind, hat der Empfänger kaum eine Chance 
zu sychronisieren.

Mal angenommen, man baut eine perfekten und unendlich aufwändigen 
Empfänger, dann müsste der einen eigen Takt haben, der um ein vielfaches 
höher ist als der des Senders (z.B. 64-fach) und dann eine eigene 
Abtastung in der Mitte von 2 Bitwechseln vollziehen.
Kommt jetzt eine lange Reihe von Einsen oder Nullen, so hat der Emfänger 
keine Chance, er würde aus der Synchronisation herauslaufen.

Alle anderen Lösungen haben eine zwangsweise Nachsynchronisation.
Fernseher = Zeilen und Bildimpuls
RS232 = 1,5 faches Startbit
HDLC = nach 4 gleichen Bits eine Bitwechsel usw.

Wie oben schon angedeutet könnte es mit bestimmten Steuerzeichen 
funktionieren. Dann kann allerdings nicht jedes beliebige Zeichen 
übertragen werden.

Siegfried

Autor: Siegfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt fällt mir doch was ein.

Mit 900MHz ist wahrscheinlich nicht die "Bit-Frequenz", sondern deine 
Trägerfrequenz gemeint, oder ?!

Falls die Bitfolgen nicht zu schnell kommen, dann sollte das mit 
RS232-Bausteinen funktionieren. Die packen dann ein Startbit in der 
Länge des 1,5fachen eines Bits davor, 8 Datenbit, 1-2 Stopbit und ein 
Parity-Bit dazu. D.h. 8 Bit werden erweitert zu einem 10,5 Bit langen 
Frames). Der RS232 Empfänger synchronisiert das dann selbst. Die Bitrate 
sollte dann allerdings unterhalb von 115000 / 10,5 * 8 = 87619 Bit/s 
liegen, damit der Sender das ganze noch verarbeiten kann.

Siegfried

Autor: Weide (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Siegfried,

Du hast Recht, selbst mit meiner ASCII Methode wäre es schwer bis 
unmöglich, irgendwo ein Startzeichen (Byte) herauszufischen. Ich schätze 
aber, dass sich das Ganze gerade bei Funkübertragung nicht auf ein 
Startbit syncronisieren lässt. Womöglich klappt's mit einer kurzen Pause 
zwischen letztem Datenpaket und neuen Startzeichen.


Gruß Weide

Autor: Ralf Hochhausen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

man baut bei der Übertragung über HF normalerweise immer sog. 
Trainingssequenzen in regelmässigen Abständen in den Datenstrom ein. 
Diese dienen einmal dazu eine Rahmensynchronisation durchzuführen und 
dann noch eine Bitsynchronisation. Das könnte dann z.B. so aussehen:

Trainingssequenz(z.B. 
16Bit)|Datenwort1|Datenwort2|Datenwort3|Trainingssquenz|Datenwort1|....

Du könntest z.B. deine Datenwörter künstlich von 8 auf 12 Bit aufblähen 
und sagst dann einfach, das die folgende Bitfolge mit 12Bits dein 
Synchwort ist: "101010101010". Beim Einschalten des Gerätes muß dein 
Sender dann zunächst diese Bitfolge aussenden und anschließend die 
Datenbytes mit den zusätzlichen 4 Bits. Diese könnte man z.B. für einen 
Fehlerschutz vorsehen.
Der Empfänger wartet beim einschalten dann immer zunächst auf dieses 
Synchwort und synchronisiert sich dann mit dem Empfangsbitstrom. Danach 
kann er die Empfangsbits decodieren.
Zur Bitsynchronisation kann man auch verschiedene Codes verwenden, die 
z.B. eine '1' durch eine positive und eine '0' durch eine negative 
Flanke übertragen(Manchester-Code). Dadurch tritt bei jedem Bit ein 
Wechsel des Signalzustandes auf und es ist so möglich, sich auf den 
Bitstrom zu synchronisieren. Ich bin mir jedoch nicht sicher ob man 
diesen Code für einen FSK-Modulator verwenden kann. Falls nicht muß man 
die Bitsynchronisation mit einem Synchwort bewerkstelligen.

Gruß Ralf

Autor: gill (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke fur die vorschlage.das mit der trainingssequenz ist glaube ich 
nicht realisierbar.
denn mein sender sendet ununterbrochen daten.
d.h.die datenbits konnten die gleich form haben wie die 
trainingssequenz.dann triggert der empfanger auf falsche 
trainingssequenz.
meine arbeit besteht darin temperatur uber 8 sensoren uber den 
microcontroller AT90S8535 AD zu wandeln und zu multiplexen.
anschliessend werde ich meine daten fsk
mdulieren und an einen sender mit ft=915mHz draufzugeben.auf der 
empfangsseite empfange ich das signal mach wieder eine demodulation geb 
es wieder auf den microcontroller,demultiplexe es und habe am ausgang 
des microcontrollers eine analoge spannung.
das problem ist das meine databytes die gleiche form annehmen konnen wie 
die startbytes.
meine idee ist folgende:beim AD Wandler die referenzspgn. z.b.auf 5V zu 
setzen.Auf den eingang analogen eingang nicht mehr wie 5 V draufzugeben.
somit kann schon die bitfolge bei einem 8 bit wandler 11111111 nicht 
vorkommen.
dann sieht mein rahmen so aus:
|11111111|11111111|1.databyte|2.Data|3....|6..|
|11111111|11111111|7.data    |8 data|usw.
der startbyte 11111111 kann in den data nicht wegen der referenzspgn 
vorkommen.
ich muss jedoch mein startbyte so definieren:
11111111|11111111|denn mein data kann ja auch so 
aussehen:00001111|11110000.somit hatte ich wieder 8 einsen 
hintereinander.was meint ihr dazu?

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.