Hab soeben den Test mit dem Laptop im Batteriebetrieb durchgeführt.
Am Ergebnis hat sich nichts geändert.
Nach wie vor werden nach dem MEGA 88 nur kryptische Zeichen ausgegeben.
Nun hab Ich irgendwie keine Idee mehr.
Hab soeben den Test mit dem Laptop im Batteriebetrieb durchgeführt.
Am Ergebnis hat sich nichts geändert.
Nach wie vor werden nach dem MEGA 88 nur kryptische Zeichen ausgegeben.
Nun hab Ich irgendwie keine Idee mehr.
justiere die baudraten mal minimal, stell den baudgen mal um 1 nach oben oder unten ob das hilft, vielleicht hast du nur timing artefakte
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
Hmm, wenn es an der Baudrate liegen würde, wäre das Ergebnis bei konstantem "U" (0x55) eher systematisch.
Bist Du sicher, dass beide Controller rundlaufen? Kannst Du z.B. durch einen kontinuierlich hochlaufenden Zähler auf dem Display oder eine blinkende LED sicherstellen, dass nicht ein Partner durch ne elektrische Störung komplett aussteigt?
Hast du es mal generell mit geringeren Baudraten probiert? Was passiert bei 9600 Baud?
Vielleicht ist deine ISR zu umfangreich, um schnell genug abgearbeitet zu werden.
Vielleicht ist der Atmega auch zu langsam... Mit welchem Takt (Quartz) läuft er ? Ist der Clock-Divider ausgeschaltet? Und wieso hast du diesen krummen Wert F_CPU 7372800?
Wieso benutzt du keinen 16 MHz-Quartz mit Divider 1 und F_CPU 16000000?
Jein ... du denkst heir an einer erkennbare Schwebung oder ein Muster, aber mit hinreichend viel Zufall und Parametern wird eine schöne Schwebung/Muster auch zum RNGwäre das Ergebnis bei konstantem "U" (0x55) eher systematisch.
Daher der Vorschlag es mal damit zu probieren (vergiss nicht auch ein verpasstes stopp-bit kann zu lustigen Daten im DATA Register führen obwohl im Status Register alle roten Lämpchen leuchten)
Ein weiterer Vorschlag wäre es Fehlerbehandlung einzubauen, also das Statusregister zu prüfen und weiterzuleiten. Vielleicht ergibt sich dann mehr Einsicht.
Wir reden hier zwar von Atmega zu Atxmega, aber ich kann aus meinem Job heraus sagen, dass manchmal zu viel genauigkeit auch Grenzwertprobleme verursacht ... in unserem Fall ein Device und ein Master, bei dem das Device sich zu exakt ans minimale Timing hält und der Master, schon aus Toleranzgründen für zu lange Bytes, deswegen manchmal ein Byte schlicht verpasst (okay das ist ein Problem mit der Protokollspezifikation die eine Schnittmenge von 0uS, statt weniger uS Toleranz-Pause beim Timminig hat aber ein schönes Beispiel für Grenzwertprobleme)Abweichung 0,0%
Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
nicht.
Dann wäre der Test denkbar schlecht gewählt. Wenn Du alle 100ms ein Byte sendest, kommt es zu keiner Schwebung, da das Startbyte keine Zweideutigkeit zulässt.
Wenn ich die Baudrate teste, fange ich eigentlich auch mit ner 0 als Testbyte an und schaue, ob's nen Frame Error gibt (Stopbit nicht erkannt, Baudrate (beim Sender) zu langsam) oder ob der empfangene Wert systematisch <>0 ist (Baudrate zu schnell).
Geändert von Holomino (07.03.2019 um 15:32 Uhr)
Hab am ATXMEGA mal die nächst niedrigere und dann die nächst höhere Einstellung probiert - Beides Erfolglos.justiere die baudraten mal minimal, stell den baudgen mal um 1 nach oben oder unten ob das hilft, vielleicht hast du nur timing artefakte
Der Fehler bleibt!
EDIT!
Hab jetzt beide Controller auf 9600BAUD umgeflashed nun geht es auch mit dem PC nicht mehr.
Ich hab immer mehr den Verdacht der USART des Controllers hat ne Macke!
Ich werd morgen mal nen ATMEGA 328 rein löten.
Der Controller läuft mit 3,3V der ATMEGA88 ist da nur bis max 10MHz spezifiziert.Und wieso hast du diesen krummen Wert F_CPU 7372800?
Der krumme Quarz Wert kommt daher, weil ich nur damit gerade Teiler für die standard Baudraten her bekomme.
Die Schaltung arbeitet als reines Display interface.
Die seriellen Daten sollen nur auf einem 128x64 Display angezeigt werden.
Geändert von wkrug (07.03.2019 um 19:53 Uhr)
Mal zum Update.
Auch mit dem ATMEGA 328P läuft es nicht.
Ich hab dann den Stützkondensator der Display Platine von 10µF auf 100µF erhöht -> Kein Effekt.
Da das ohnehin nur ein Test war, hab Ich die Geschwindigkeit des X-MEGA USART auf MiDi konforme 31250 Baud eingestellt.
Mein MiDi Interface erkennt jetzt auch die Daten.
Ich kann also jetzt weiter testen.
Ich schiebe das mit den Problemen vorerst mal auf meine grottige Verkabelung ( Breadboard ).
Wenn's was neues gibt, poste Ich noch mal.
Vorerst mal Danke an alle für die guten Tipps!
Lesezeichen