mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Manchester decoder?


Autor: schicki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich arbeite mit dem MSP430F149 und das große Problem ist das der 
Controller zu langsam ist um das empangene Signal zu Sampeln. Also messe 
ich nun die Zeit die vergangen ist bei jeder Transittion und da ich die 
Datenrate weiß kann ich sagen welche Daten ich erhalten habe. Das 
Problem ist nur die Daten die Empfange Jittern sehr stark. Nun habe ich 
eine MAX und MIN-Time eingeführt. Nun gut aber wenn das Jittern über 50% 
liegt fällt mir ein Bit um und der Rest was ich Empfange ist nur scheiß. 
Gibt es einen Algorythmus mit dem ich das verhindern kann? oder Ander 
Lösungen? kann sein das total am Holzweg bin. Bin mir nicht sicher.

danke im Voraus für eure Hilfe
Schicki

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da must Du schon wesentlich konkreter werden.

Z.B. wie schnell ist Dein MSP und das Signal.

Bei 50% Fehler hast Du keine Chance rauszufinden, ob das ein langer oder 
kurzer Impuls ist. Der kurze ist nämlich genau 50% des langen.

Daher sollte der Fehler 20% nicht überschreiten.


Peter

Autor: schicki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ICh möchte 20 kBit Manchester Codierte Daten schicken der MSP läuft mit 
einer Taktfrequenz von 4,5MHz also braucht er im Mittel für eine 
Instraktion 1µs das ist zu wenig um zu Sampeln.
Nun mit 50% meinte ich 50% eines kurzen Impulses.
also 25% eines ganzen Übertragenen Bites.

Schicki

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei 25µs je Pegeländerung sind 1µs Zyklen wirklich zu knapp.

Ich kenn den MSP nicht, hab nur mal kurz ins Datenblatt gesehen.
Der läuft ja leider nicht mit 5V, daher kann ich ihn nicht gebrauchen.


Aber im MSP-Datenblatt steht doch 125ns Instruction Cycle Time.
Was stimmt denn nun ?

In der Befehlsbeschreibung habe ich auch keinerlei Ausführungszeiten 
gesehen. Ist denn jeder Befehl 125ns lang ?


Peter

Autor: schicki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nun mit den 125ns( bei takt = 1/8MHz=125ns) Instructionsycle ist es so 
das er für einen Befehl 6 Instructionsycles benötigt und bei einem takt 
von 4,5MHz komme ich auf 1,3µs für einen Befehl

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@schicki,
bei meiner Suche nach Manchester Decoder bin ich auf hiesiges Thema
gestoßen.
Die Verwendung des MSP430 würde mir sogar sehr gelegen kommen.
Ist es dir zwischenzeitlich gelungen, ein Programm zu entwickeln, um
Manchester Daten zu dekodieren?
Was will ich machen? Ich möchte die Temperaturdaten eines
Funkthermometers, welches wohl die Temperatur als Manchester Code
senden soll, entschlüsseln.
Kennt jemand eine Literaturstelle oder hat einen Hinweis, wo man sich
schlau machen könnte, um mit einem µC oder PC Manchester Code zu
dekodieren?
MfG
Wolfgang

Autor: Arno M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab mein Funkthermometer mit 2 AtMega8 u. Bascom u. Manchester
Modulation so gemacht:
1)die Sendedaten werden werden byteweise in Manchester umgewandelt
z.B.:aus 11110000 wird 01010101 10101010,dann schicke ich diese 2 Byte
in das Uart mit 2400 Baud mit dem Befehl "Printbin".Das Ausgangspin
des Uart wird natürlich mit dem Modulationseingang des Sendemoduls
verbunden.Nach jeder Messung geht der AVR schlafen.. :-))


2)Empfangsseitig geht es umgekehrt:am Uart Ausgang habe ich diese 2
(oder mehrere) Byte wieder,diese werden sequentiell nach dem Bitmuster
(oder "Pattern") 01 oder 10 abgetastet und wieder in eine 1 bzw. 0
umgewandelt,und schon habe ich mein Originalbyte wieder.Wenn das
Empfangene Bitmuster "00" oder "11" ist liegt ein Fehler vor.

Grüsse Arno M.

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Arno,

das kann gar nicht funktionieren, von der UART werden mit Start und
Stop immer 10 Bit gesendet.

Aus:

01010101 10101010

wird gesendet:

0010101011 0101010101

Das ist also irgendein Fantasiekode, auf keinen Fall aber Manchester.

Funktionieren tuts natürlich bei Dir, da Du ja auf beiden Seiten Deinen
Fantasiekode einsetzt und keine Manchester-Geräte.


Peter

Autor: Arno M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter
klar ist das kein reiner Manchester,aber dafür eine
gleichspannungsfreie Modulation ,für kommerzielle Funkmodule
geeignet,und vom Code her sehr wenig aufwendig.Und es funktioniert
äusserst zuverlässig!

Arno M.

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"aber dafür eine gleichspannungsfreie Modulation"


Aber auch nur dann, wenn ununterbrochen gesendet wird. Sind Pausen
zwischen den Bytes, bleibt die Leitung High.

Sind also Pausen dazwischen, könnte es die Empfangssicherheit
verbessern, wenn man am Anfang einige Dummy-Bytes sendet, damit sich
die AGC des Empfängers wieder einpegeln kann.


So wie ich aber die Frage verstanden habe, ging es um fertige
Funkmodule, die Manchester senden.


Peter

Autor: Arno M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Letzte Bemerkung:
1)ich sende ein ganzes Array inklusive einige Bytes Vorspann + CRC am
Ende
2)das  Uart kann man bei Bascom auf "inverted" einstellen,also
low-Pegel in den Pausen

Arno M.

Autor: Sharan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Arno M.
Ich hatte im Codeforum mal nach Codes für Manchester unter Bascom
gefragt.
Würdest du den Code veröffentlichen?
MfG
VW-Fahrer

Autor: Wolfgang (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
<So wie ich aber die Frage verstanden habe, ging es um fertige
Funkmodule, die Manchester senden.>

Genau, so ist es

Ich suche eine Möglichkeit, aus dem gesendeten Signal die
ursprünglichen 0 und 1 wieder herzustellen, wobei ich aber nicht sicher
bin, dass es tatsächlich Manchester Code ist.

MfG
Wolfgang

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.