Lunarman
07.06.2007, 15:20
Hallo,
für meinen Bot muss ich eine Kommunikation via UART atmega8 (hardware UART) und atmega 32 (software uart) aufbauen. Nur richtig funktionieren tuts nicht. Ich poste mal den Code beider Seiten. Wenn ich den atmega8 einfach so die Motoren einschalten lasse, funktioniert es aber.
$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 Motorspeedright As Byte
Dim Motorspeedleft As Byte
Dim Directionright As String * 3
Dim Directionleft As String * 3
Motorspeedright = 100
Motorspeedleft = 100
Directionright = "Rwd"
Directionleft = "Rwd"
Do
Waitms 500
Portc.1 = 1
Waitms 00
Portc.1 = 0
Print #2 , Motorspeedright
Waitms 1
Print "tschacka 1"
Print #2 , Motorspeedleft
Waitms 1
Print "tschacka 2"
'Print #2 , Directionright
Waitms 1
Print "tschacka 3"
'Print #2 , Directionleft
Waitms 1
Print "tschacka 4"
Loop
End
$regfile = "m8def.dat"
$crystal = 1000000
Dim Motorspeedleft As Byte
Dim Motorspeedright As Byte
Dim Directionright As String * 3
Dim Directionleft As String * 3
Dim A As Bit
Dim B As Bit
Dim C As Bit
Dim D As Bit
Config Portc.0 = Output
Config Portc.1 = Output
Config Portc.2 = Output
Config Portc.3 = Output
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
Do
Input Motorspeedright
Input Motorspeedleft
'Input Directionright
'Input Directionleft
'If Directionright = "Fwd" Then
'A = 0
'B = 1
'End If
'If Directionright = "Rwd" Then
'A = 1
'B = 0
'End If
'If Directionright = "Stop" Then
'A = 0
'B = 0
'End If
'If Directionleft = "Fwd" Then
'C = 0
'D = 1
'End If
'If Directionleft = "Rwd" Then
'C = 1
'd = 0
'End If
'If Directionleft = "Stop" Then
'C = 0
'D = 0
'End If
Compare1a = Motorspeedright
Compare1b = Motorspeedleft
Portc.0 = 0 'A
Portc.1 = 1 'B
Portc.2 = 0 'C
Portc.3 = 1 'D
Loop
End
Die Motoren laufen beim UART nicht an, klicken aber einmal und lassen sich per Hand kaum noch drehen. Das klicken führe ich auf eine kleine Bewegung des Ankers zurück, die Bremsung interpretiere ich so, dass Strom durchfließt, aber anscheinend irgendwie nicht genug. Was hab ich denn falsch gemacht?
EDIT: Der Uart funktioniert aber. Wenn ich den Stecker abnehme klicken die Motoren nicht mehr.
für meinen Bot muss ich eine Kommunikation via UART atmega8 (hardware UART) und atmega 32 (software uart) aufbauen. Nur richtig funktionieren tuts nicht. Ich poste mal den Code beider Seiten. Wenn ich den atmega8 einfach so die Motoren einschalten lasse, funktioniert es aber.
$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 Motorspeedright As Byte
Dim Motorspeedleft As Byte
Dim Directionright As String * 3
Dim Directionleft As String * 3
Motorspeedright = 100
Motorspeedleft = 100
Directionright = "Rwd"
Directionleft = "Rwd"
Do
Waitms 500
Portc.1 = 1
Waitms 00
Portc.1 = 0
Print #2 , Motorspeedright
Waitms 1
Print "tschacka 1"
Print #2 , Motorspeedleft
Waitms 1
Print "tschacka 2"
'Print #2 , Directionright
Waitms 1
Print "tschacka 3"
'Print #2 , Directionleft
Waitms 1
Print "tschacka 4"
Loop
End
$regfile = "m8def.dat"
$crystal = 1000000
Dim Motorspeedleft As Byte
Dim Motorspeedright As Byte
Dim Directionright As String * 3
Dim Directionleft As String * 3
Dim A As Bit
Dim B As Bit
Dim C As Bit
Dim D As Bit
Config Portc.0 = Output
Config Portc.1 = Output
Config Portc.2 = Output
Config Portc.3 = Output
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
Do
Input Motorspeedright
Input Motorspeedleft
'Input Directionright
'Input Directionleft
'If Directionright = "Fwd" Then
'A = 0
'B = 1
'End If
'If Directionright = "Rwd" Then
'A = 1
'B = 0
'End If
'If Directionright = "Stop" Then
'A = 0
'B = 0
'End If
'If Directionleft = "Fwd" Then
'C = 0
'D = 1
'End If
'If Directionleft = "Rwd" Then
'C = 1
'd = 0
'End If
'If Directionleft = "Stop" Then
'C = 0
'D = 0
'End If
Compare1a = Motorspeedright
Compare1b = Motorspeedleft
Portc.0 = 0 'A
Portc.1 = 1 'B
Portc.2 = 0 'C
Portc.3 = 1 'D
Loop
End
Die Motoren laufen beim UART nicht an, klicken aber einmal und lassen sich per Hand kaum noch drehen. Das klicken führe ich auf eine kleine Bewegung des Ankers zurück, die Bremsung interpretiere ich so, dass Strom durchfließt, aber anscheinend irgendwie nicht genug. Was hab ich denn falsch gemacht?
EDIT: Der Uart funktioniert aber. Wenn ich den Stecker abnehme klicken die Motoren nicht mehr.