Guten Tag
Ich will den Ursprung meines Problemes garnicht lange geschreiben, da es
ziemlich kompliziert wäre.
Kurz gesagt:
Ich arbeite an einem M-Bus Master und habe ein kleines Problem beim
Empfang der Antwort.
Eine Antwort eines M-Bus Slaves sieht folgendesmassen aus:
Startbit: 1
Gefolgt von 8 Datenbits
Stopbit: 0
Genau dieses Stopbit wird mir beim Empfang zum Problem. Wie bereits
erwähnt ist dieses Stopbit im Gegensatz zu vielen anderen arten der
Kommunikation eine Logische 0, und nicht eine 1.
Im Anhang findet ihr ein Bild von der Anwort welche ich zurzeit Empfange
beziehungsweise eben nicht Empfange, denn mein Master interpretiert das
fehlende Stopbit als Leitungsbruch.
Nun meine Frage:
Gäbe es eine möglichkeit, mit einem uC über UART die Daten einzulesen
ohne Stopbit? Dass ich sogesehen von Slave -> uC -> Steuerung Empfange.
Das ganze hört sich etwas verwirrend an, ich möchte an der Stelle auch
nicht gross weiter drauf eingehen. Meine frage ist es lediglich, ob es
möglich wäre diese Daten in einen uC einzulesen ohne das Stopbit.
Sprich dieses:
Start "1" | 8 Datenbit | Stopbit "0"
Soweit ich mich einlesen konnte, erwartet ja auch die UART Schnittstelle
eines uC's ein Stopbit "1".
Ich hoffe, die frage ist verständlich formuliert, leider nicht ganz
einfach mein Problem in Worte zu fassen.
Ich danke bereits jetzt für jeden Tipp den ich erhalte und stehe
natürlich für Fragen zur Verfügung.
Freundliche Grüsse
Elolehrling
Elolehrling schrieb:> Startbit: 1> Gefolgt von 8 Datenbits> Stopbit: 0
Dann ist das Signal invertiert.
Eine UART sendet:
Startbit: 0
Gefolgt von 8 Datenbits
Stopbit: 1
Dann habt ihr wohl die Frage falsch verstanden.
Das Empfangene Telegramm von:
Startbit: "1"
8 Datenbit
Stopbit: "0"
kommt NICHT von einer UART Schnittstelle!!! Das ganze basiert auf einem
M-Bus Protokoll von welchem ich lediglich die Pegel umgewandelt habe um
sie theoretisch mit einem uC Empfangen zu können.
Das ganze lässt sich also nicht einfach invertieren, die Richtung stimmt
so schon.
Elolehrling schrieb:> Dann habt ihr wohl die Frage falsch verstanden.
nicht wirklich. Du hast die Antwort nicht verstanden.
Hardwaremässig dein Eingangssignal invertieren.
> kommt NICHT von einer UART Schnittstelle!!! Das ganze basiert auf einem> M-Bus Protokoll von welchem ich lediglich die Pegel umgewandelt habe um> sie theoretisch mit einem uC Empfangen zu können.
Ja.
Und wenn du den Pegel nochmal umdrehst und an die UART gepflogenheiten
anpasst, dann kannst du die UART verwenden. Sonst kannst du ganz einfach
die UART nicht verwenden. Punkt.
Im empfangenen Datenbyte die Bits nachher nochmal im Programm umdrehen
ist ja nicht das große Problem.
Elolehrling schrieb:> Dann habt ihr wohl die Frage falsch verstanden.>> Das Empfangene Telegramm von:> Startbit: "1"> 8 Datenbit> Stopbit: "0">> kommt NICHT von einer UART Schnittstelle!!! Das ganze basiert auf einem> M-Bus Protokoll von welchem ich lediglich die Pegel umgewandelt habe um> sie theoretisch mit einem uC Empfangen zu können.>> Das ganze lässt sich also nicht einfach invertieren, die Richtung stimmt> so schon.
Dann hast du wohl den UART nicht verstanden.
Wenn du ein Problem mit Stopbit = 0 hast, hast du auch ein Problem mit
Startbit = 1. Damit ein UART das richtig empfängt, muß Startbit = 0 und
Stopbit = 1 sein.
Also invertiere das Signal. Damit die Daten dann wieder passen müssen
die im Controller dann nochmal invertiert werden.
Sofern du nicht auch ein Problem mit der Datenreihenfolge hast. Also
Highbit statt Lowbit first. Dann musst du das auch noch umdrehen.
mfg.
Okay, jetzt verstehe ich was mit dem invertieren gemeint war. Das könnte
funktionieren, werde ich die kommenden Tage ausprobieren!
Vielen dank für den Vorschlag, soweit habe ich nicht gedacht.
PS:
Was so landläufig 'Stopbit' genannt wird, kann man auch einfach als eine
Pause zwischen 2 zu übertrageneden Bytes auffassen, in der die Leitung
auf Ruhepegel geht. Die Pause soll dem Empfänger einfach nur ein bischen
Zeit verschaffen, in der er das erhaltene Byte loswerden kann.
Mehr ist das nicht, was da hochtrabend "Stopbit" genannt wird.
Komm mal runter o.o
ich bin im 4ten Lehrjahr Elektroniker, ich denke schon dass ich ein
wenig Ahnung habe. Zudem habe ich nur euer "invertieren" zuerst falsch
inverpretiert.
Und wo pöble ich jemanden an? Ich habe hier im vergleich zu dir keinen
beleidigt, ich habe lediglich gesagt, dass das ganze nicht geht. Mehr
auch nicht. Ich habe keinen von euch angegriffen und bin sachlich
geblieben, finde ist kein Grund mich direkt als dumm abzustempeln.
Zudem habe ich mich stets freundlich bedankt für eure Hilfe, also bitte
ich dich mal runter auf den Boden der Tatsachen zu kommen und dich
wieder zu beruhigen, danke! :)
> ... habe ich nur euer "invertieren" zuerst falsch inverpretiert.
Nun ja. Es könnte Dir auf lange Zeit nützen, wenn Du mal beschreibst,
wie Du denn das zuerst interpretiert hast und wir Dir erklären, worin
der Interpretationsfehler liegt. Damit könntest Du verhindern, das DIr
das an anderer Stelle nochmal passiert.
USB schrieb im Beitrag #3419531:
> Elolehrling schrieb:>> soweit habe ich nicht gedacht.>> Man merkt schon ziemlich deutlich, dass Nachdenken nicht wirklich Deine> Stärke ist. Du bist einfach zu dumm für Elektronik oder andere komplexe> Themengebiete.
@USB: Ohne solche Leute wäre das Forum gähnend leer und du hättest auch
nichts zu tun.
Ja, bevor ich hier weiter beleidigt werde und für dumm abgestempelt:
ich habe da invertieren so interpretiert, dass ich die Richtung des
Telegramms invertieren soll und nicht die Pegel.
Ist nun gut. Beleidigt mich ruhig weiter.
Eigentlich schade. Mir wurde hier X-mal sehr gut weitergeholfen von sehr
netten Leuten, heute wohl einige ein schlechten Tag oder so.
Auf jedenfall noch einmal danke für die hilfe, hat mir geholfen! :)
Karl Heinz schrieb:> PS:> Was so landläufig 'Stopbit' genannt wird, kann man auch einfach als eine> Pause zwischen 2 zu übertrageneden Bytes auffassen, in der die Leitung> auf Ruhepegel geht. Die Pause soll dem Empfänger einfach nur ein bischen> Zeit verschaffen, in der er das erhaltene Byte loswerden kann.> Mehr ist das nicht, was da hochtrabend "Stopbit" genannt wird.
Vorsicht.
Auf diese Weise gönne ich einem Controller auch mehr Zeit, indem ich vom
PC mit 2 Stopbits sende. Es muss aber 1 sein, also der Pegel. Sonst gibt
es einen Frameerror.
Allerdings habe ich auch ein paar USB-Serial, denen das gar nicht
gefällt.
Sind glaube ich Prolifics.
mfg.
Elolehrling schrieb:> heute wohl einige ein schlechten Tag oder so.
Es ist völlig klar, wer hier einen schlechten Tag hatte, du hast ja
schliesslich behauptet, alle hier hätten das Problem falsch verstanden,
nur du nicht. Nennt man Geisterfahrer-Syndrom: "Ein Geisterfahrer?
Hunderte!".
Gruss Reinhard
>ich habe da invertieren so interpretiert, dass ich die Richtung des>Telegramms invertieren soll und nicht die Pegel.
Du meinst wahrscheinlich eine Umkehr in der Zeit oder auch in der
Reihenfolge. Zuerst das Stop-Bit, die Daten und dann das Start-Bit.
Das nennt eigentlich niemand "Invertieren". Die einzige im
Elektronikbereich relevante Verwendung bezieht sich auf das digitale
Schaltelement "Inverter" und das analoge Element gleichen Namens.
Ersteres tut, was Du jetzt annimmst. Letzteres erzeugt Spannungungen aus
anderen Spannungen (im allgemeinen, aber nicht zwingend, höhere) mit
umgekehrter Polarität.
Falls das von Dir Angenommene gemeint gewesen wäre, hätte man von der
Reihenfolge der Bits gesprochen.
Erlaube mir bitte, Dir zu empfehlen, Dir mal die Zeit zu nehmen und die
Begriffe, die Du so in der Lehre kennengelernt hast, in einer
Enzyklopädie nachzuschlagen (notfalls auch in Wikipedia). Du wirst
feststellen, das es oft eine ganze Reihe von Subjektbereichen gibt. Sehr
viele Begriffe sind "ererbt", eine Reihe aber auch Neuschöpfungen. Man
kann dann auch leichter erschließen auf welche anderen Bereiche dieser
Begriff durch Analogie zu sinnvoll zu übertragen ist. Andererseits sind
manche Verwendungen oder Nicht-Verwendungen durchaus willkürlich.