Cyrus777
02.11.2011, 11:45
Hi,
ich habe letzte Woche auf das RN-Control Board den Bootloader draufgespielt, der mit der Funkverbindung funktioniert. Als wir dann heute den Motor testen wollten, tat sich nichts mehr. Ich hab dann wieder den alten Bootloader drauf kopiert (BOOTLOADERRN-CONTROL.HEX), weil ich dachte es lag daran. Die Lock and Fusebits hab ich auch wieder so eingestellt wie im rncontrol14.pdf vorgegeben. Es funktionierte dann immer noch nicht.
Ich hab dann ein neues Programm auf Grundlage des Demoprogramm von Robotiknetzwerk geschrieben, was nur die beiden Motoren, die installiert sind, ansteuert. Und da hab ich dann festgestellt, dass plötzlich die Logik der PWM vertauscht ist. Der Motor wird jetzt also mit Pwm1a = 0 eingeschaltet und mit Pwm1a = 1023 ausgeschaltet. Ich hab keine Ahnung warum. Ich hab jetzt drei Stunden lang rumprobiert und bin langsam am verzweifeln :-/
Gibt es eine Möglichkeit, das Board auf den Auslieferungszustand zurückzusetzen? Könnte ich das einfach in Bascom mit "Erase Chip" gefahrlos machen?
Ich kann ja auch mal das Programm hier reinkopieren.
Declare Sub Motortest()
Declare Sub Test_motor()
Declare Sub Lenk_test()
Declare Function Tastenabfrage() As Byte
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
Dim I As Integer
Dim N As Integer
Dim Ton As Integer
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung
Config Pina.7 = Input 'Für Tastenabfrage
Porta.7 = 1 'Pullup Widerstand ein
Const Ref = 5 / 1023 'Für Batteriespannungsberechnung
Dim Taste As Byte
Dim Volt As Single
' Für Motorentest
'Ports für linken Motor
Config Pinc.6 = Output 'Linker Motor Kanal 1
Config Pinc.7 = Output 'Linker Motor Kanal 2
Config Pind.4 = Output 'Linker Motor PWM
'Ports für rechten Motor
Config Pinb.0 = Output 'Rechter Motor Kanal 1
Config Pinb.1 = Output 'Rechter Motor Kanal 2
Config Pind.5 = Output 'Rechter Motor PWM
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Pwm1a = 0
Pwm1b = 0
Tccr1b = Tccr1b Or &H02 'Prescaler = 8
I = 0
Sound Portd.7 , 400 , 450 'BEEP
Sound Portd.7 , 400 , 800 'BEEP
Sound Portd.7 , 400 , 450 'BEEP
Print
Print "**** FH KL PS *****"
Do
Taste = Tastenabfrage()
If Taste <> 0 Then
Select Case Taste
Case 1
Call Motortest
End Select
Sound Portd.7 , 400 , 500 'BEEP
End If
Waitms 100
Loop
End
'Diese Unterfunktion fragt die Tastatur am analogen Port ab
Function Tastenabfrage() As Byte
Local Ws As Word
Tastenabfrage = 0
Ton = 600
Start Adc
Ws = Getadc(7)
' Print "Tastenabfrage anpassen!ADC Wert ws=" ; Ws
If Ws < 500 Then
Select Case Ws
Case 400 To 450
Tastenabfrage = 1
Ton = 550
Case 330 To 380
Tastenabfrage = 2
Ton = 500
Case 260 To 305
Tastenabfrage = 3
Ton = 450
Case 180 To 220
Tastenabfrage = 4
Ton = 400
Case 90 To 130
Tastenabfrage = 5
Ton = 350
' Case Else
' Print "Tastenabfrage anpassen!ADC Wert ws=" ; Ws
End Select
Sound Portd.7 , 400 , Ton 'BEEP
End If
End Function
Sub Motortest()
'Portc.6 = 1 'Rechtslauf bei H
'Portc.7 = 0 'Linkslauf bei H
'Portd.4 = 1 'PWM Lenkmotor
'Rechter Motor ein
Portb.0 = 0 'Rechtslauf bei H
Portb.1 = 1 'Linkslauf bei H
'Portd.5 = 1 'PWM Antrieb
Pwm1a = 0 'Lenkung
'Pwm1b = 1023 'Antrieb
Wait 5
Pwm1a = 1023 'Linker Motor aus
'Pwm1b = 0
End Sub
ich habe letzte Woche auf das RN-Control Board den Bootloader draufgespielt, der mit der Funkverbindung funktioniert. Als wir dann heute den Motor testen wollten, tat sich nichts mehr. Ich hab dann wieder den alten Bootloader drauf kopiert (BOOTLOADERRN-CONTROL.HEX), weil ich dachte es lag daran. Die Lock and Fusebits hab ich auch wieder so eingestellt wie im rncontrol14.pdf vorgegeben. Es funktionierte dann immer noch nicht.
Ich hab dann ein neues Programm auf Grundlage des Demoprogramm von Robotiknetzwerk geschrieben, was nur die beiden Motoren, die installiert sind, ansteuert. Und da hab ich dann festgestellt, dass plötzlich die Logik der PWM vertauscht ist. Der Motor wird jetzt also mit Pwm1a = 0 eingeschaltet und mit Pwm1a = 1023 ausgeschaltet. Ich hab keine Ahnung warum. Ich hab jetzt drei Stunden lang rumprobiert und bin langsam am verzweifeln :-/
Gibt es eine Möglichkeit, das Board auf den Auslieferungszustand zurückzusetzen? Könnte ich das einfach in Bascom mit "Erase Chip" gefahrlos machen?
Ich kann ja auch mal das Programm hier reinkopieren.
Declare Sub Motortest()
Declare Sub Test_motor()
Declare Sub Lenk_test()
Declare Function Tastenabfrage() As Byte
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 32
Dim I As Integer
Dim N As Integer
Dim Ton As Integer
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
Config Adc = Single , Prescaler = Auto 'Für Tastenabfrage und Spannungsmessung
Config Pina.7 = Input 'Für Tastenabfrage
Porta.7 = 1 'Pullup Widerstand ein
Const Ref = 5 / 1023 'Für Batteriespannungsberechnung
Dim Taste As Byte
Dim Volt As Single
' Für Motorentest
'Ports für linken Motor
Config Pinc.6 = Output 'Linker Motor Kanal 1
Config Pinc.7 = Output 'Linker Motor Kanal 2
Config Pind.4 = Output 'Linker Motor PWM
'Ports für rechten Motor
Config Pinb.0 = Output 'Rechter Motor Kanal 1
Config Pinb.1 = Output 'Rechter Motor Kanal 2
Config Pind.5 = Output 'Rechter Motor PWM
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Pwm1a = 0
Pwm1b = 0
Tccr1b = Tccr1b Or &H02 'Prescaler = 8
I = 0
Sound Portd.7 , 400 , 450 'BEEP
Sound Portd.7 , 400 , 800 'BEEP
Sound Portd.7 , 400 , 450 'BEEP
Print "**** FH KL PS *****"
Do
Taste = Tastenabfrage()
If Taste <> 0 Then
Select Case Taste
Case 1
Call Motortest
End Select
Sound Portd.7 , 400 , 500 'BEEP
End If
Waitms 100
Loop
End
'Diese Unterfunktion fragt die Tastatur am analogen Port ab
Function Tastenabfrage() As Byte
Local Ws As Word
Tastenabfrage = 0
Ton = 600
Start Adc
Ws = Getadc(7)
' Print "Tastenabfrage anpassen!ADC Wert ws=" ; Ws
If Ws < 500 Then
Select Case Ws
Case 400 To 450
Tastenabfrage = 1
Ton = 550
Case 330 To 380
Tastenabfrage = 2
Ton = 500
Case 260 To 305
Tastenabfrage = 3
Ton = 450
Case 180 To 220
Tastenabfrage = 4
Ton = 400
Case 90 To 130
Tastenabfrage = 5
Ton = 350
' Case Else
' Print "Tastenabfrage anpassen!ADC Wert ws=" ; Ws
End Select
Sound Portd.7 , 400 , Ton 'BEEP
End If
End Function
Sub Motortest()
'Portc.6 = 1 'Rechtslauf bei H
'Portc.7 = 0 'Linkslauf bei H
'Portd.4 = 1 'PWM Lenkmotor
'Rechter Motor ein
Portb.0 = 0 'Rechtslauf bei H
Portb.1 = 1 'Linkslauf bei H
'Portd.5 = 1 'PWM Antrieb
Pwm1a = 0 'Lenkung
'Pwm1b = 1023 'Antrieb
Wait 5
Pwm1a = 1023 'Linker Motor aus
'Pwm1b = 0
End Sub