Testus2K
30.05.2011, 09: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
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