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.
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 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 EndDie 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?Code:$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
EDIT: Der UART funktioniert aber. Wenn ich den Stecker abnehme klicken die Motoren nicht mehr.







Zitieren

Lesezeichen