Go Down

Topic: Ärger mit SoftSerial auf MEGA (Read 801 times) previous topic - next topic

juergenp

Nov 03, 2010, 03:16 pm Last Edit: Nov 03, 2010, 03:20 pm by juergenp Reason: 1
Hallo,

Schon wieder ein Problem, dass ich nicht verstehe:
Ich lese auf einem MEGA über diverse UARTs Sensoren aus, packe die Daten zusammen, und übertrage diese dann auch wieder per UART. Nachdem das Projekt eigentlich fertig war, sollte noch ein Sensor dazu. Den musste ich dann per SoftSerial anbinden.
Lief auch eigentlich. Aber jetzt wurde dieser Sensor ausgetauscht, und mit dem neuen gehts auf einmal nicht mehr. Jetzt habe ich durch gezieltes Rumprobieren herausgefunden, dass ich den SoftSerial (Ich nenne ihn Serial5) vernünftig lesen kann, wenn ich Serial3 nicht mit der geforderten Baudrate von 38400 initialisiere, sondern auch mit 4800, wie Serial5 (Oder gar nicht initialisiere).
Natürlich kann ich Serial3 so nicht lesen, der muss auf 38400 stehen. Aber wieso kann ich Serial5 nicht lesen, wenn ich Serial3 initialisiere. Ich lese ihn grade nicht mal aus, es geht wirklich nur ums initialisieren...
Irgend eine Idee?
Achso, Serial3 ist dann noch einer der Hardware UARTs, nicht per SoftSerial...

uwefed

Hallo juergenp

Die Baudraten werden intern über die Timer programmiert. Es könnte sein, daß beide Schnittstellen den gleichen Timer verwenden und darum sich Gegenseitig stören.
Lies mal im Datenblatt nach und in der SoftSerial Dokumentation.
http://www.atmel.com/dyn/resources/prod_documents/doc2549.pdf

Grüße Uwe

juergenp

#2
Nov 03, 2010, 03:59 pm Last Edit: Nov 03, 2010, 03:59 pm by juergenp Reason: 1
Hm, die Sache ist, mit dem alten Sensor, der auch auf Serial5 mit 4800 Baud lief, hats ja funktioniert. Auch wenn Serial3 auf 38400 stand....
Da gibts aber auch Unterschiede in der Übertragung. Beide senden NMEA, aber trotzdem musse ich für den neuen Sensor die Lesefunktion ändern. Obwohl sie das gleich ausgeben.
Ich find das alles ein bisschen verwirrend....

juergenp

Also, ich hab jetzt auch mal Serial2 und Serial3 vertauscht.  Hat nix gebracht. Serial0 und Serial1 kann ich nicht  ändern, da die Hardware dafür fest verdrahtet ist.
Es scheint ja aber am Sensor zu liegen, denn wie gesagt: Mit dem alten funktioniert es bei selber Einstellung.
Ich nehme an, dass es da um das Framing geht, denn da kommt dann sowas raus:
1QUjl?¤¦¡¥-HQ#"ÃÊ?)ÅdÊòıÝÍ]aÿ¤ ¦¡¥¢\?I2?aYdp`°?????SLKCá¤?¥¦««YMNKL*      Âºá±9q?Tfr¤§¥¬¢©V(      ÒÚ¹Á±
also fast nur 3stellige Dezimalzeichen statt sauberem ASCII

Go Up