Ich hab gerade ein ähnliches problem. ich versuche mit nem M32 an nen M8 Befehle zu senden. Diese werden aber nicht richtig ausgeführt. So soll er bei "vor" den Motor langsam beschleunigen, ich hör aber nur ein Klicken. Wenn ich dem m8 einfah hart eincode , dass der empfangene text "vor" ist (einfach input text durch text = "vor" ersetzt), dann läuft alles.
der m32 hat soft-uart, der m8 halt hardware-uart. Der m32 rennt mit 16 Mhz, der m8 mit 1Mhz, beide sind auf 9600 eingestellt und der m32 auf 8m1, da ich nicht wusste ,wo ich das beim m8 einstellen muss.
Code:
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 9600
Dim Text As String * 16
Dim Speed As Byte
Config Portc.0 = Output
Config Portc.1 = Output
Config Portc.2 = Output
Config Portc.3 = Output
A Alias Portc.0
B Alias Portc.1
C Alias Portc.2
D Alias Portc.3
Config Portb.1 = Output
Config Portb.2 = Output
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1
Speed = 50
Do
'Input Text hab ich wie beschrieben auskommentiert, stattdessen halt text = "vor" geschrieben
Text = "Vor"
If Text = "Vor" Then
A = 0
B = 1
C = 0
D = 1
Speed = 50
Do
Compare1a = Speed
Compare1b = Speed
Waitms 4
Speed = Speed + 1
Loop Until Speed = 150
End If
If Text = "Rueck" Then
A = 1
B = 0
C = 1
D = 0
Do
Compare1a = Speed
Compare1b = Speed
Waitms 2
Speed = Speed - 1
Loop Until Speed = 150
Waitms 1000
End If
If Text = "Links" Then
A = 1
B = 0
C = 0
D = 1
End If
If Text = "Rechts" Then
A = 0
B = 1
C = 1
D = 0
End If
If Text = "Stop" Then
A = 0
B = 0
C = 0
D = 0
End If
If Text = "Kurverechts" Then
A = 0
B = 1
C = 0
D = 1
Do
Compare1a = Speed
Waitms 2
Speed = Speed - 1
Loop Until Speed = 50
End If
If Text = "Kurvelinks" Then
A = 0
B = 1
C = 0
D = 1
Do
Compare1b = Speed
Waitms 2
Speed = Speed - 1
Loop Until Speed = 50
End If
Loop
End
Code:
$regfile = "m32def.dat"
$crystal = 16000000
Config Portc.1 = Output
Config Portd.2 = Output
Config Portd.7 = Output
Config Portd.6 = Output
Open "comd.7:9600,8,n,1" For Input As #1
Open "comd.6:9600,8,n,1" For Output As #2
Dim Entfernung As Integer
Dim Text As String * 16
Text = "Vor"
Do
Waitms 500
Portc.1 = 1
Waitms 500
Portc.1 = 0
Print #2 , "Vor"
Loop
End
Lesezeichen