PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit UART Kommunikation



Testus2K
30.05.2011, 08:49
Hallo
Mein Controller sollte einen Motor schalten, je nachdem was für ein Zeichen er bekommt, genauer gesagt sollte er jeweils anders reagieren, wenn er ein "a" oder ein "A" empfängt und den Inhalt des nächsten Zeichens, dass er empfängt an eine Variable weitergeben.
Den Inhalt zweiten zeichens wollte ich als Byte Wert für die PWM auflösung nehmen.

Das nur zur Erklärung des Programms, das Problem liegt in einem anderen Teil.
Ich habe den Print-Befehl ein einigen Stellen eingebaut um zu gucken, wo das Programm landet. Zu erst fehlte das ' Print "Lebenszeichen2" ' aus der zweiten Zeile, in diesem Fall konnte ich im (Bascom)-Terminal keine reaktion sehen, auch wenn ich versucht hab irgendein Zeichen zu senden.
Nach dem einfügen der Zeile bekam ich:


Lebenszeichen2
Lebenszeichen
128
da war was
was sich laufend wiederholte. Also muss das senden meiner Nachricht "Lebenszeichen2" das "Usr.rxc" gefüllt haben, das dann auch immer gefüllt blieb/neu gefüllt wurde. Ich hatte angenommen "Usr.rxc" wäre nur zum empfangen, oder war das in meinem Beispiel falsch?

Der Quellcode ist unten angefügt (ausschnitsweise).
vielen Dank schon mal, mfG



Do
Print "Lebenszeichen2"

'uart IN
If Usr.rxc = 1 Then 'Wenn Byte empfangen...
I = Udr 'Byte aus UART auslesen
Print "Lebenszeichen"
Print I
Select Case i
Case "A" 'Motor 1 vowraerts
Portc.1 = 0
Portc.2 = 1
Mo1 = 1
Print "Das A ist angekommen"
Case "a" 'Motor 1 rueckwaerts
Portc.2 = 0
Portc.1 = 1
Mo1 = 1
Print "Das a ist angekommen"
Case Else
Print "da war was"
If Mo1 = 1 Then
Mo1s = I
Mo1 = 0
End If
If Mo2 = 1 Then
Mo2s = I
Mo2 = 0
End If
If Mo3 = 1 Then
Mo3s = I
Mo3 = 0
End If
End Select
End If

Ocr2 = Mo1s

Loop

Ceos
30.05.2011, 09:51
also in dem Select Case testest du zumindest schonmal auf ein kleines 'i' statt einem großen 'I' (wobei cih nicht weis ob das bei bascom nen unterschied macht)

zum anderen entspricht deine 128 dem '€' Zeichen, was auch schon seltsam scheint

hast du Baudrate und Bit-Konfiguration überprüft?

Testus2K
30.05.2011, 10:03
Nein, ich denke das mit dem großen und dem kleinen i macht keinen Unterschied, sonst hätte er sich schon beschwerd.
Da alles andere an Text Fehlerfrei ankommt müsste alles richtig eingestellt sein, den Fehler würde ich eher im Programm vermuten.

PicNick
30.05.2011, 11:21
btw: Die VariablenNamen sind bei Bascom tatsächlich NICHT case-sensitiv. d.h. "i" = "I"

Wenn du 128 reinkriegst, hat's was mit der Kommunikation.
Beliebt bei Jung und Alt sind
1) $CRYSTAL
2) Fuses, oft in Tateinheit mit 1)
3) Baudrate

Check das einfach mit

PRINT "HELLO, World"

bevor du das nicht pippifein am Terminal stehen hast, ist alles andere Makulatur

Testus2K
30.05.2011, 11:39
hmm Zeit sich sorgen zu machen!
Ich habe erst "Lebenszeichen2" in "Lebenszeichen 1" geändert und dann "64" da stehen gehabt (auch nach einem Reset des Controllers bleiben die Zahlen gleich).

Ich hab jetzt noch was eingefügt:


Do
Print "HELLO, World"
Print "Dubidadubidu kakadu lala"
Print "Lebenszeichen 1"

und jetzt erkennt mein PC das USB-->RS232 Kabel als Maus, was zum einen dafür sorgt, dass mein Mauszeiger immer nacht rechts läuft und zum anderen, dass ein Teil von Windows für knapp 2 Minuten einfriert.

Testus2K
30.05.2011, 11:46
Okay, hab den Teil mit "Dubidadubidu kakadu lala" rausgenommen uns jetzt läuft wieder alles wie gewohnt!
Ich bekomme im Terminal:

HELLO, World
Lebenszeichen 1
Lebenszeichen
64
da war was


Meinungen?

PicNick
30.05.2011, 11:52
naja, 64 ist immerhin knapp dran ( "A" = 65)
aber knapp daneben ist eben auch vorbei.

Ich würde einmal die Installation des USB/RS232 Adapters checken.

Da du einen PC normalerweise auch mit "kakadu lala" eigentlich nicht dazu bringen kannst, einen µC als Maus einzustufen,
(und wenn, wär's interessant ), gehen da offenbar seltsame Dinge vor.

Testus2K
30.05.2011, 12:01
Ja, ich denke ich werde nochmal alles Nachmessen, aber das klingt nach keinem Fehler, der entsteht, weil irgendeine Lötstelle zu viel oder zu wenig da ist...wobei...das Teil nichts merkt wenn ich etwas vom PC aus sende, sondern erst dann glaubt etwas zu empfangen, wenn es selbst etwas sendet, oder? Na das klingt doch mal nach etwas, was eine Falsche Lötstelle anrichten könnte.

PicNick
30.05.2011, 13:02
Der USB/Rs232 Adaptor sollte auch funzen, wenn der µC NICHT daran angesteckt ist.
Wenn du ihn absteckst und mit einer Drahtbrücke RX/TX ( leitung 2 / 3) überbrückst, müsste am Terminal alles was du auf den Tasten eintippst, am Schirm erscheinen (da kann nix hin werden)
Dazu isses wurst, welche Baudrate eingestellt ist.

Testus2K
30.05.2011, 13:19
Wie's scheint kann ich kein Pieps senden. Da mein Gelöte ein für sich ganz gut aussieht werd ich mal versuchen an einen rechner mit echtem Comport zu kommen und das nochmal zu versuchen, vielleicht liegt es ja an dem USB-->RS232 Adapter.

PicNick
30.05.2011, 13:30
Wie oben gesagt, du kannst auch ohne Partner den Adaptor checken.

Testus2K
30.05.2011, 13:41
Ah gut, dass du das nochmal geschrieben hast, ich dachte du meintest die Ausgänge des max232 verbinden. Hab den max232 jetzt ausgebaut und eine Brücke an die Stelle gesetzt, an der RXD und TXD ankommen. Bekomme auch da kein Zeichen auf den Schirm. Das ist ja schonmal ein guter Hinweiß. Bleibt mir also wirklich erstmal nicht über, als nach einem anderen Rechner zu schauen.
THX dafür schon mal