Driver Display DIY, Problem: Datenwort f. Position wird teilw. nicht empfangen

  • Hallo allerseits,


    ich habe erst vor ca. 3-4 Monaten angefangen mit dem Arduino Uno zu "programmieren" und die ganzen Lernprojekte zu verwirklichen. Da wird einem Anfänger ja schon ein kleiner Überblick geboten, was alles mit dem Arduino möglich ist.
    Es hat nicht lange gedauert, bis mir die Seiten von Peter Nieheus und Stephan Heß untergekommen sind. So kam es, dass ich mir mein eigenes Driver Display, nur mit mehr Funktionen bauen wollte. :D


    Die Features bisher sind:

    • Fahrerauswahl (1-6), für den das Display gelten soll
    • mehrere LEDs für die Geschwindigkeitsanzeige
    • mehrere LEDs für den Tankinhalt (mit Blinken bei fast leer)
    • eine 7 Segmentanzeige für die Position des Fahrers
    • zwei 7 Segmentanzeigen, für die Runden des Fahrers
    • Countdown der Startampel wird an den 7 Segmentanzeigen mit runtergezählt
    • ein 20x4 LC-Display, auf dem Rundenzeit, Bestzeit, Runde der Bestzeit und Rundenabstand zum Führenden angezeigt werden

    WP_20170212_001.jpg



    Ohne die Seiten von Peter Niehues und Stephan Heß wäre es für mich als Laien mit meinem begrenzten Wissen und Verständnis zu der Materie überhaupt nicht möglich gewesen: Die Erklärungen zu den Datenworten und die "einfachen, kleinen" Programme zum Auslesen der Bahndaten hätte ich nie im Leben selber herausfinden, geschweige denn programmieren können. Vielen Dank dafür an beide (vllt. bekommen sie es ja irgendwie mit)! :thumbsup:
    Ich habe zwischenzeitlich viele Stolpersteine gehabt, deswegen viel recherchiert und sehr viel gelesen. Im Prinzip lief bei mir das meiste dann aber doch durch try & error, weil es für viele Problemchen dann doch einfach noch keine 1:1 Lösung gab. - Ein bißchen eigener Gehirnschmalz muss dann doch mit einfließen ... macht ja auch mehr Spaß, besonders, wenn man das Problem dann doch alleine lösen kann. Einige Programmschnipsel von Peter Niehues konnte ich aber doch direkt verwenden. Lange Rede, kurzer Sinn: Ich bin kein Programmierer, möchte mich da aber trotzdem reinfuchsen. Aber jetzt bin ich an einem Punkt, an dem ich gerade gar nicht weiter weiß.


    Kurz zum Aufbau und Problem:
    Ich habe die zweistellige 7-Segmentanzeige (f. Runden) und die einstellige 7-Segmentanzeige (f. Position des Fahrers) über zwei Schieberegister und zusätzlich ein 20x4 LC-Display über ein I2C an meinen Arduino Uno angeschlossen.
    Ohne das LCD werden die Runden und Position genau richtig wiedergegeben. Mit dem LCD werden zwar die Runden, aber die Position nicht mehr richtig angezeigt: Die Position verschlechtert sich zwar, wenn ein Gegner mich überholt, jedoch wird die Position nicht verbessert, sobald ich den Gegner überhole. Und jetzt das Kuriose: Das Auslesen der Datenworte zeigt, dass nur noch dann die "Positionsdatenworte" gesendet (bwz. empfangen?) werden, wenn ich in der Position abfalle - aber nicht, wenn ich aufsteige. Würde das Datenwort empfangen werden und die Anzeige zeigt einfach nicht das richtige an, würde ich den Fehler sicherlich finden ... aber so bin ich mit meinem Latein völlig am Ende. Ich habe das mit mehreren Autos und vielen Runden getestet: Es wird nur das Positionsdatenwort empfangen, wenn ich abfalle. Sobald das LCD aus ist, wird das Positionsdatenwort auch empfangen, wenn ich in der Position aufsteige.
    Hat dafür vllt. jemand einen Rat? Kann es sein, dass sich mit dem I2C-Shield (Analogpins A4 und A5) und dem einlesen der Daten (Input 2 am Arduino) irgendwas überschneidet, dass zufälligerweise genau dieses Datenwort dann nicht mehr empfangen wird?


    Ich bin für jeden Tip/Hinweis dankbar.


    Viele Grüße,
    Faddi

    2 Mal editiert, zuletzt von Faddi ()

  • Google Werbung
  • Ich habe die gleiche Frage im Arduino-Forum gestellt. Da war ich mit dem Problem wohl doch eher aufgehoben. ;)
    Ich konnte durch einen hilfreichen Tip das Problem lösen: Ich habe die Methode für das LCD auseinandergerupft. Bei Zielüberfahrt werden die Runden- und Bestzeiten gespeichert, gekoppelt mit der Statusänderung einer Booleschen Variablen. Zusätzlich wird ein Zeitstempel gesetzt.
    Die Anzeige erfolgt erst, wenn die 10 Datenworte empfangen worden sind und die Boolesche Variable den entsprechenden Status hat und eine gewisse Zeit nach der Zieldurchfahrt vergangen ist. Durch Probieren kam ich auf 250ms.



    edit: Das Problem hat sich dadurch doch noch nicht gelöst

    2 Mal editiert, zuletzt von Faddi ()

  • "gekoppelt mit der Statusänderung einer Booleschen Variablen. Zusätzlich wird ein Zeitstempel gesetzt"


    versteh ich gerade nicht, könntest du das näher erläutern?

  • Ich denke


    - er sammelt erst mal alle 10 Datenworte
    - wenn die da sind, wechselt die Variable von false auf true
    - sind dann noch die 250 ms verstrichen, schickt er den Spaß ans DriverDisplay

  • Sehr interessant magst du ev den code online stellen ich bin gerade dabei genau das gleiche herauszufinden allerdings hab ich den loggen erst mal etwas erweitert, um nur für einen regler die Daten Worte zu erhalten.


    Wäre aber interessant twie du auf die richtigen Daten Worte gekommen bist.


    Meine code weder ich natürlich auch gerne bereitstellen.


    Hast du schon den code für den Tankinhalt weil den such ich gerade also wie die Daten Worte dazu aussehen.
    Ev wäre es cool im forum einen Thread mit daten worten zu machen wo man sammelt was was heist.

  • ich interpretiere warscheinlich da was falsch, oder ihr schreibt Sachen die nicht so sind.......
    Die CU sendet erst nach Anfrage, es gibt verschiedene Anfragen an die CU, die Antwortet dann.
    Die Antwort der CU ist unterschiedlich lang, kommt aber immer in "einem Rutsch", also warum soll ich da warten bis irgendwas erfüllt ist?


    Was sind Datenworte?

  • ebay Werbung
  • meine Vermutung, ihr habt Sorgen mit Senden/Epmfangen...........
    Ihr müsst das $ auswerten, das Ende Daten

  • Hi allerseits,


    vorab: Ich bin kein Programmierer und habe 3 ca. Monate daran getüftelt - das meiste per "try and error".
    Falls ich mich unverständlich ausgedrückt haben sollte, tut´s mir leid - das ist aber vllt. auch darauf zurückzurühren, dass ich eben kein "Programmierer" bin?


    Nichtsdestotrotz hat slot-extreme exakt erkannt und geschrieben, was ich meinte:


    Ich denke


    - er sammelt erst mal alle 10 Datenworte
    - wenn die da sind, wechselt die Variable von false auf true
    - sind dann noch die 250 ms verstrichen, schickt er den Spaß ans DriverDisplay

    Wie ich schon im 2. Post geschrieben habe, haben sich damit meine Probleme erledigt!


    Zu Druckgott und den Datenworten:
    Die Darstellung der Datenworte fand ich selber auch ein wenig verwirrend: Wenn ich mich recht entsinne, werden nur die Datenworte (Achtung: Ich glaube die Reglerdatenworte in MSB?) in LSB geschrieben. Hast du die Tabelle von Slotbär? Die hatte ich zur Hilfe. Als Bsp:
    1111001010000 (Tank Fahrer 0 ist voll)
    1. Bit: Startbit (Ist immer da)
    2.-5.Bit: Tankwert (Dezimalzahl 0-7, LSB: 11110)
    6.-10. Bit: Befehl (Dezimalzahl 10, LSB: 01010)
    11.-13. Bit: Fahrer (Dezimalzahl 0-7, LSB: 000)


    Hilft dir das weiter? Wenn nicht: Ich habe gerade gestern eine Excel-Tabelle erstellt, in der aus einer Dezimalzahl eine fünstellige Bitzahl in MSB und LSB erstellt wird - mit automatischer Nullenauffüllung. Klingt jetzt womöglich wieder schräg, aber ich habe jedesmal Gehirnschnecken beim heraussuchen der Datenworte bekommen :P
    Die könnte ich dir evtl. zukommen lassen...


    Viele Grüße,
    Faddi



    edit: Also du musst die 13 Bit-Datenworte betrachten, nicht die 10 Bit Reglerdatenworte!

    Einmal editiert, zuletzt von Faddi ()

  • ich interpretiere warscheinlich da was falsch, oder ihr schreibt Sachen die nicht so sind.......
    Die CU sendet erst nach Anfrage, es gibt verschiedene Anfragen an die CU, die Antwortet dann.
    Die Antwort der CU ist unterschiedlich lang, kommt aber immer in "einem Rutsch", also warum soll ich da warten bis irgendwas erfüllt ist?


    Was sind Datenworte?

    Hi kollimann,


    sprichst du vllt. von der Verbindung zur PC Unit? druckgott und ich sind bei dem Driver Display, was die Daten über den Bahnstrom bekommt. Genau wie das originale Driver Display wird meines auch einfach an die Bahn angeklemmt.


    Trotzdem siehst du das schon richtig. Die CU sendet durchweg die 10 Datenworte (bzw. Programmierdatenwort, Aktivdatenwort und Reglerdatenwort, um bei Slotbärs Bezeichnungen zu bleiben).
    Aber z.B. nach einer Zieldurchfahrt werden nacheinander (vllt. auch in anderer Reihenfolge) mehrmals wichtige Informationen mit mehreren Programmierdatenworten gesendet: Zieldurchfahrt eines Fahrzeuges in Bestzeit oder nicht (und die anderen 9 Worte), Position dieses Fahrzeuges (und die anderen 9 Worte), Tankstand des Fahrzeuges (und die anderen 9 Worte) etc... Also mindestens 3 oder 4 x hintereinander Informationen, die ich gerne mit meinem Driver Display auswerten möchte. Als das LCD nach dem ersten "wichtigen" Datenwort anging, hat es für einen Moment das Lesen der restlichen "wichtigen" Datenworte gestört. Daher habe ich bei mir das von slot-extreme so schön beschriebene Prozedere hinzugefügt, so dass sich das LCD erst nach einer gewissen Zeit und wenn alle 10 Wörter gesendet worden sind, aktualisiert.
    Ich hoffe, ich konnte da etwas Klarheit schaffen?


    Viele Grüße,
    Faddi

    Einmal editiert, zuletzt von Faddi ()

  • ebay Werbung
  • nachdemnach mir deine code im forum anschaut habe bin ich jetzt auch die Tabelle besser verstanden.
    Der Fahrer war mir klar. Den fange ich in meinen verlinkten code auch ab. Ich habe auch eine gewisse Reihenfolge in der Ausgabe der bahn erkannt. Ich dachte aber der tankinhalt ist wenn er voll ist mit dem zahlenwet 15 definiert und wenn er leer ist mit 0 und das konnte ich in der Ausgabe nicht herausfiltern. Dose Worte habe ich aber nicht direkt mit der Tabelle 010 für tanken verbunden ich habe nur eine Wiederholung diese Blocks in meiner Ausgabe festgestellt.
    was mir nicht klar War das das 010 6 bis 8 das tanken ist. Die 10 danach wird vermutlich der Steller an der cu sein für real off und das zweite. Aber das muss ich noch testen.


    Die ersten Ziffern davor sind dann der tankinhalt, wobei wenn ich das richtig sehe ist für die ersten zahlen in dem Wort dann nicht automatisch dir größte Zahl auch der vollste tankinhalt oder?


    Ich werde meine encodieren so erweitern das mann das direkt rauslesen kann. Der code sagt eine dann z.b. jetzt kommt tankinhalt und dann entsprechend die zahl.


    Das gleiche mache ich für die anderen datenwörter wie bremsen usw, dann ist das einfacher zum lesen und zu erkennen.


    Dann kann man jedes datenwörter exakt lesen. Wobei vermutlich hast du ja schon die meisten datenwörter in deinem code im arduino forum drin.


    Deine Beschreibung mit der zeildurchfahrt ist verständlich du hast sozusagen Daten verloren weil du Leistung ins Display gepackt hast und parallel die bahn nicht mehr gelesen hast.

    2 Mal editiert, zuletzt von druckgott ()

  • nachdemnach mir deine code im forum anschaut habe bin ich jetzt auch die Tabelle besser verstanden.
    Der Fahrer War mir klar.
    was mir nicht klar War das das 010 6 bis 8 das tanken ist. Die 10 danach wird vermutlich der Steller an der cu sein für real off und das zweite. Aber das muss ich noch testen.


    Die ersten Ziffern davor sind dann der tankinhalt, wobei wenn ich das richtig sehe ist für die ersten zahlen in dem Wort dann nicht automatisch dir größte Zahl auch der vollste tankinhalt.

    Hi,
    wenn ich dich richtig gedeutet habe, siehst du das noch nicht ganz richtig.
    Ich versuche es nochmal anders. __________________Startbit __Wert __Befehl __Regler
    Das gesamte Datenwort für Regler 0, Tank voll lautet: 1 _______1110 ___01010 __000


    Der Tankwert kann als Dezimal 0-7 einnehmen. 0 ist leer, 7 ist voll. Die Zahl 7 in LSB ist: 1110. Das ist also die Binärzahl für Tank voll (gleich mehr zu der zusätzlichen "0")
    Der Befehl mit der Dezimalzahl 10 ist der Befehl für den Tankstand. Die Binärzahl in LSB: 01010
    Der Regler kann die Dezimalzahl 0-5 haben. Hier ist der Regler 0, als Binärzahl in LSB: 000


    Die Werte haben IMMER 4 Ziffern, die Befehle IMMER 5, die Regler IMMER 3. Fehlende Ziffern werden durch Nullen aufgefüllt. Bsp: Die Dezimalzahl 10 wäre als Binärzahl in MSB (also "normal") 1010. Der Befehl braucht aber 5 Bits! Wenn du jetzt in MSB eine zusätzliche Null nach vorne stellst, ändert sich der Dezimalwert nicht. Würdest du eine Null hinten dranhängen, hättest du statt Dezimal 10 "20". Und um die Verwirrung komplett zu machen, musst du das in LSB darstellen - also alles von hinten nach vorne aufschreiben. So wird aus (MSB) 01010 dann in LSB 01010. (Leider fällt der Unterschied hier nicht auf, daher die fett markierte Null)


    Dazu vllt. ein anderes Beispiel: Der Befehl Nr. 9 steht für eine Zieldurchfahrt ohne Bestzeit des jeweiligen Farhzeugs. 9 als Binärzahl in MSB: 1001. Für einen Befehl braucht man aber wieder 5 Bits, also kommt eine Null davor --> 01001. In LSB wird daraus: 10010


    Viele Grüße,
    Faddi


    edit: Sorry wegen der Unterstriche, aber ich bekomme die Formatierung nicht so hin, wie ich gerne hätte...

    8 Mal editiert, zuletzt von Faddi ()

  • Servus zusammen :)


    @druckgott:
    Die Tankwerte laufen nur von 0 bis 7, sprich die ersten 3 Bits im "Wert" des Befehls #4. Das 4. Bit im "Wert" wurde schon immer genutzt, um das Fahrzeug blinken zu lassen (Tank leer beim Tanken mit PSAU oder Frühstart). Hier muss man also nochmals unterscheiden. Der höchste Wert im Befehl #4 hat immer was mit Blinken zu tun. Im Befehl #4 werden die Tankwerte nur übermittelt, wenn der Modus an der CU auf Tanken=REAL steht. Dadurch wird die Motorsteuerung beeinflusst. Wird der Modus REAL nicht verwendet, wird ein Tank mit dem Wert 0 übermittelt. Ein Driver-Display hat also nur über den Befehl #10 stets den richtigen Wert fürs Tanken.


    @Faddi:
    Ich habe deinen Code noch nicht gesehen. Vllt. kannst du noch mal verlinken, wo er zu finden ist. Ansonsten hilft dir/euch vllt. folgendes weiter:


    Befehl #10 wird nur dann gesendet, wenn sich der CU-gesteuerte Tankstand geändert hat (wird 1x gesendet).
    Bsp Prog-Wort:
    0110 01010 000
    W=6 B=10 R=0 (Tankstand=6 für Fahrzeug 0)


    Bei einer Zielüberfahrt wird bei einer Bestzeit (Befehl #8) folgendes gesendet:
    1000 00010 000
    W=1 B=8 R=0 (Regler 0 mit neuer Zieldurchfahrt (W=1 fest) Bestzeit(B=8) )


    Wenn es keine Bestzeit war, dann wird mit dem Befehl #9 gesendet.


    Je nachdem, ob sich im Rennen in den Positionen etwas geändert hat, wird mit Befehl #6 die neue Position aller Regler (die seit Rennstart mal die Startlinie überquert haben) nacheinander übermittelt. Wie gesagt, nur bei Änderungen in der Reihenfolge.


    Hat sich etwas in der Rundenzahl des Führenden getan, wird mit Befehl #17 und #18 die Rundenzahl übertragen.


    Für ein Driver Display kann man eigentlich nur die Position aller Fahrer fehlerfrei bestimmen. Mit einer Rundenanzeige für ALLE wird's schon schwieriger. Gerade Events wie Kurzlschluss oder aktivierte Chaos-Taste machen einem das Leben schwer. ;)


    Beste Grüße,
    René

  • Danke für die Info ich schau mir das heute Abend in Ruhe an. Aber so langsam verstehe ich es auch. Hat das eigentlich VOB euch jeder getrennt herausgefunden oder gibt's da noch ne Quelle. Mich wundert es eh das man da so wenig findet

  • @Faddi:
    Ich habe deinen Code noch nicht gesehen. Vllt. kannst du noch mal verlinken, wo er zu finden ist. Ansonsten hilft dir/euch vllt. folgendes weiter...

    Hi Rene,


    ich weiß das alles. ;)
    Meine Probleme haben sich ja auch erledigt (s. 2. Post). Ich habe versucht das druckgott zu verdeutlichen :D

    Einmal editiert, zuletzt von Faddi ()

  • ebay Werbung
  • Danke für die Info ich schau mir das heute Abend in Ruhe an. Aber so langsam verstehe ich es auch. Hat das eigentlich VOB euch jeder getrennt herausgefunden oder gibt's da noch ne Quelle. Mich wundert es eh das man da so wenig findet

    Ich habe im November damit angefangen und hatte nur die Seiten von Peter Niehues und Stephan Heß - genau wie du. Ich habe nicht kontinuierlich dran gearbeitet und bin diese Woche erst mit meinem Driver Display fertig geworden. Also für mich war´s sehr viel Arbeit ^^
    Letztendlich habe ich die in meinem ersten Post beschriebenen Funktionen alle umsetzen können.

    Einmal editiert, zuletzt von Faddi ()

  • Hi Rene,
    ich weiß das alles. ;)
    Meine Probleme haben sich ja auch erledigt (s. 2. Post). Ich habe versucht das druckgott zu verdeutlichen :D

    Dann ist ja alles gut. ^^
    Freut mich, dass es soweit funktioniert.


    Ich habe mal einen kurzen Blick auf deinen Code im Arduino-Forum geworfen. Ich könnte mir vorstellen, dass es hier und da noch Fehler geben wird. Die Decodierung von Peter übergibt ein Datenwort erst, wenn das nächste angefangen hat. Sprich Interrupt und Auswertung erfolgen so ziemlich zeitgleich und du hast eine Latenz von >6ms. Das könnte man optimieren. Dein Code hat ganz schön viele globale Variablen. Das macht den Code langsam. Solltest du mal unerklärliche Fehler haben, wäre hier die erste Anlaufstelle. Die Variable "fahrer1" wird z.B. nur in der Funktion "void Regler1()" genutzt und muss daher nicht global sein, die kannst du als Übergabeparameter setzen. Einiges könntest du auch durch #define austauschen. Die Rundenzeiten werden nicht in Echtzeit ermittelt. In deiner loop schaust du, wann ein Datenzyklus vollständig ist, holst dir dann die Zeit vom Arduino und rechnest damit. Da sind Fehler von 0,1s bis 0,5s möglich, da die CU z.B. ein Programmierwort nur sendet, wenn es im Zyklus an der Reihe ist, obwohl z.B. schon 50ms vorher die Ziellinie überquert wurde. Dann haben andere Programmierworte vllt. Vorrang. Und schließlich wäre noch die Auswertung auf dem Arduino. Die korrekten Rundenzeiten kannst du via PC-Unit-Anschluss an der CU auslesen. Dort kannst du auch etliche Anfragen senden und musst nicht auf das entsprechende Programmierwort im Bahnprotokoll warten. Geht sicherlich auch relativ fix auf einem Arduino.
    Solltest du mal irgendwann später einen Blick auf deinen Code werfen, dann wäre es nicht verkehrt, so etwas wie "if( datenwort==4175 )..." zu kommentieren. ;)
    In diesem Fall wäre 4175 = 0b1000001001111.
    Wert = 0b0000(LSB) = 0
    Befehl = 0b01001(LSB) = 18
    Regler = 0b111(LSB) = 7
    Also Runde 0 des Führenden. Das machst du ja hart codiert bis Runde 15. Da könnte man noch etwas Poesie reinstecken. Mit Maskierung kannst du einzelnen/mehrere Bits aus einer Variable filtern.
    befehl = (datenwort>>3) & 0x1F; filtert beispielsweise den Befehl aus dem Datenwort (3 Bits nach rechts schieben und nur die unteren 5 Bits mitnehmen)
    wert = (datenwort>>8) & 0x0F; filtert dann den Wert
    regler = datenwort & 0x07; filtert den Regler
    Man könnte noch von LSB auf MSB umformen, dann hättest du alles, was du brauchst.


    Na ich bin jedenfalls gespannt, was da noch alles bei dir kommt. :thumbsup:

  • Hi Rene,


    in dem Forum ist mittlerweile auch nicht mehr der aktuelle Code. Das mir Mögliche und Ersichtliche habe ich erstmal "optimiert" und konnte somit zumindest viele Zeilen einsparen. Was das speichertechnisch und zeittechnisch gebracht hat, weiß ich nicht, es liest sich aber schonmal wesentlich besser ;)
    Die Variable "fahrer1" gibt es z.B. nicht mehr, stattdessen greife ich auf arrays und die Variable "datenwort" direkt zurück, so dass ich nur noch eine Methode "Regler()" für alle 6 Fahrer benötige und nicht "Regler1()", "Regler2()", ...
    Damit bin ich aber (erstmal?) an meine "Programmiergrenzen" angekommen (wie oben geschrieben, ich "programmiere" ja erst seit ca. 3-4 Monaten, ab und zu nach Feierabend)


    Nichtsdestotrotz finde ich deine Tips SEHR interessant, selbst wenn ich noch nicht alles verstehe:

    • Von "#define" hab ich auch mal irgendwo irgendwas gelesen. Was das ist und was das macht weiß ich nicht, werde ich mir aber bei Gelegenheit mal ansehen! Ich bin mir auch sicher, dass ich die globalen Variablen noch etwas eindämmen kann ... irgendwie ... :P
    • Mit der Maskierung - sofern ich das richtig verstehe - könnte ich wirklich noch einiges an Code sparen. Cool! :D

    Die Latenzen sind mir indirekt auch schon aufgefallen: Der einzige Bug bisher ist, dass ich manchmal bei einer neuen Bestzeit einen langsameren Zeitwert als den vorherigen bekomme. An den Anschluss der PC Unit möchte ich eigentlich nicht ran, denn da hängt ja Cockpit XP dran (zumindest bei mir zu Hause). Mein Driver Display möchte ich mit zu Freunden nehmen und einfach an die Bahn anschließen könne - so wie eben das originale Driver Display auch. Außerdem wäre mir das eh zu hoch mit dem PC Unit Anschluss - bin ja jetzt schon hart am Limit :whistling:
    Irgendwie beschleicht mich das Gefühl: "Fertig" bin ich wohl doch noch nicht 8|


    Viele Grüße,
    Faddi

    2 Mal editiert, zuletzt von Faddi ()

  • Bei der Fahrzeug bzw. Driverdisplay Decodierung sollte man sich zunächst mal auf die drei für den jeweiligen Regler relevanten Datenworte pro Datensatz beschränken.
    Wenn man da erst mal alles empfängt, decodiert und dann auswertet, schleppt man zu viel Müll mit.



    Ergeben die umgedrehten Teilwörter eigentlich einen programmiertechnischen Hintergrund oder sollen die nur für Verwirrung sorgen?


    Demnach müsste die Decodierung auf dem angehängten Bild zunächst mal richtig sein, oder?
    Die Datenworte werden über random erzeugt und dann decodiert, daher können da durchaus unplausible Werte stehen :D


    Apropos Latenz, mit Ausgabe auf den seriellen Monitor pro Datenwort ca. 2000us, ohne sind es nur noch 50us .



    Decoder_Programmierdatenwort

    Grüße Jochen

    Einmal editiert, zuletzt von jme ()

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!