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|
Das beste währe eine festgelegte 1/0-Folge die sonst niemals vorkommen kann. So als Anfangsmarke z.B. "00000000".
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
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
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
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
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
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?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.