Author Topic: UART problem  (Read 12177 times)

MathiasW

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 614
  • Karma: +13/-0
    • my Arduino page
UART problem
« on: August 11, 2015, 03:56:58 PM »
Salut,

ich habe ein Problem mit einem Board: Wenn ich einen einfachen text auf die serielle Schnittstelle gebe, erhalte ich einen unleserlichen Output auf dem Terminal: ")aayvé^.&V) ©" - geschickt wurde "Hello World 2 UART1"
Bei einem baugleichen Board klappt die Ausgabe. Ich habe keine Idee, wo ich suchen soll ...

Ciao, Mathias

microtherion

  • freakyfriday
  • Full Member
  • *
  • Posts: 163
  • Karma: +13/-0
Re: UART problem
« Reply #1 on: August 11, 2015, 06:41:41 PM »
Vielleicht könntest Du mal damit beginnen, die Bitrate zu variieren. Bei einer genügend langsamen Rate hilft dann vielleicht ein Blick auf ein Oszilloskop, um Störungen zu sehen.

Kommt immer exakt der gleiche falsche Text?

MathiasW

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 614
  • Karma: +13/-0
    • my Arduino page
Re: UART problem
« Reply #2 on: August 12, 2015, 09:39:19 AM »
SAlut,

ich habe die Bitrate komplett durchgestimmt und keine Hinweise gesehen. Es kommt immer exakt der gleiche Text, auch zeitlich genau mit dem print Statement. Ein Rauschen sehe ich daher nicht als Fehlerquelle. AB 56k kommt nichts mehr, bei 38k nur "AAAAAAAAAAAAAAAA" .... (der Chip scheint wohl auch zu verzweifeln ;)

Ciao, Mathias

boxtec-support

  • freakyfriday
  • Hero Member
  • *
  • Posts: 787
  • Karma: +15/-0
    • Boxtec Web
Re: UART problem
« Reply #3 on: August 12, 2015, 10:52:32 AM »
Die wirre Zeichenfolge würde mich als allererstes auf die Baudrate schliessen lassen, genauso siehts dann aus, aber ich bin sicher das hast Du ausgeschlossen.
Ich habe so meine Erfahrungen mit Software Serial gemacht, da werden dann einfach Zeichen ausgetauscht oder gehen verloren, ein "Hello World!" mit 38400 über Software kommt dann z.B. als "Helo orld#" an. Aber da kann man zuverlässig bei tieferwerdenden Baudraten höhere Genauigkeit erlangen und umgekehrt.

Ev. sind die beiden Kommunikationspartner nicht auf dem gleichen GND-Level (wenn z.B. eines der GND freihängt)? Da UART aktiv auf LOW ist, kann das interessante Effekte verursachen denke ich.

MathiasW

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 614
  • Karma: +13/-0
    • my Arduino page
Gelöst: UART problem
« Reply #4 on: August 12, 2015, 10:53:57 AM »
Salut,

es war ein Timingproblem mit den Voreinstellungen des Bootloaders. Nachdem ich den aktuellen Bootloader geflasht hatte funktioniert die Serielle Kommunikation. der Grund liegt darin, dass der alte Bootloader auf 40 MHz, der neue Bootloader und die Codebasis aber auf 48 MHz ausgelegt waren.

Übrigens: Testen wollte ich eigentlich die maximale Baudrate. Die ist derzeit erfolgreich auf 912600 eingestellt (!)

Ciao, Mathias

dinoi

  • freakyfriday
  • Sr. Member
  • *
  • Posts: 441
  • Karma: +7/-0
    • Dinoi
Re: UART problem
« Reply #5 on: August 13, 2015, 10:18:17 AM »
Hallo Mathias,

Gratulation, das war aber ein sehr "schöner" Fehler.  ;)
Hast Du den Timing Unterschied mit dem Oszilloskop festgestellt?

Gruss Reto



arduinopraxis

  • freakyfriday
  • Hero Member
  • *
  • Posts: 553
  • Karma: +11/-0
  • Arduino Praxiseinstieg (4.Auflage)
    • Arduino Praxiseinstieg, 4. Auflage
Re: UART problem
« Reply #6 on: August 13, 2015, 10:58:14 AM »
Quote
Gratulation, das war aber ein sehr "schöner" Fehler.  ;)
Coole Beschreibung  ;)

MathiasW

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 614
  • Karma: +13/-0
    • my Arduino page
Re: UART problem
« Reply #7 on: August 13, 2015, 12:40:53 PM »
Salut,

das Oszi habe ich noch nicht eingeschaltet. Ich hatte erst einmal SoftwareSerial ausprobiert. Das funktionierte auf einem anderen Board sofort und auf dem neuen Board erhielt ich den gleichen verdrehten Output. Damit war klar, dass es sich nicht um ein Hardwareproblem (Rauschen oder Störsignale) handeln kann, sondern in der Software liegen muss. Daher habe ich mir die board Definitionen angeschaut und dabei ein Hex File gefunden, welches bei den Board Files lag und mit 48MHz im Namen versehen war. Danach habe ich mir die Dokumentation des Boards durchgelesen und dort stand, dass der Fubarino mit Wechsel von Version 1.4 auf 1.5 auf 48 MHz hochgetaktet wurde. Da das Flashen nur Sekunden braucht, habe ich den neuen bootloader ausprobiert und das Problem war gelöst. Am Spaßigsten fand ich, dass als letztes Zeichen des verwurstelten Textes ein Copyright kam...

Inzwischen sind die Tests mit dem HelvePic32-SMD44 recht weit gediehen. UART und I2C Bus sind getestet und ok, alle GPIO Pins sind ok. In der Mitte des Boards habe ich die im Vergleich zum HevePic32 zusätzlichen Pins plaziert. Diese 13 pins zusammen mit 5V,3.3V und GND ergeben 16 pins, welche über ein Flachbandkabel abgegriffen werden können. Die untere Pinreihe habe ich mit einer Vcc und GND Pinreihe versehen, so dass diese Pins direkt ein GVS Triple darstellen und ich dort also direkt auf dem Board 8 Servos aufstecken kann.

Ciao, Mathias

 

anything