-         

Ergebnis 1 bis 5 von 5

Thema: Problem mit PWM

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    21.04.2011
    Beiträge
    24

    Problem mit PWM

    Anzeige

    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.
    Code:
    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

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    01.10.2009
    Beiträge
    437
    Zitat Zitat von Cyrus777 Beitrag anzeigen
    Ich hab keine Ahnung warum.
    Lies die history.txt im Bascom-Verzeichnis unter 2.0.7.1 durch, dafür ist sie da.
    Gibt es eine Möglichkeit, das Board auf den Auslieferungszustand zurückzusetzen?
    Ersetze in der Timer-Config das Clear Down jeweils gegen ein Clear Up und das Problem ist gelöst.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    21.04.2011
    Beiträge
    24
    Hi MagicSmoke,

    vielen Dank für die Antwort. Jetzt funktioniert es wieder! Das Problem war, dass wir im letzten Semester mit einer älteren Version der Demo programmiert hatten und nun in der FH die Vollversion angeschafft hatten.

  4. #4
    Hi, ich hab wohl das gleiche Problem wie Cyrus. Auch ich habe vor einigen Jahren ein RN-Control Board gekauft, dies aber damals nicht mit Getriebemotoren betrieben. Jetzt habe ich es seit langer Zeit wieder ausgegraben und mit dem Motortest das gleiche Problem wie oben beschrieben: Gas bei I=0 und Stop bei I=1023. Hab jetzt die aktuelle Bascom-AVR demo drauf, die scheint aber keine history.txt zu haben also kann ich da nicht nach schaun. Könnte mir jemand genauer erklären was ich zu tun hab?

    Viele Grüße,
    Beni

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    21.04.2011
    Beiträge
    24
    Der Tipp von MagicWSmoke hat damals gut funktioniert. Also einfach in der Zeile "Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down" die beiden "Clear Down" zu "Clear Up" ändern.

Ähnliche Themen

  1. ATMega32 UART problem --> Problem gelöst
    Von ChristophB im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 12.03.2010, 19:45
  2. Problem mit Atmega644P Erkennung (Bascom-Versions-Problem)
    Von Rohbotiker im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 11.08.2008, 19:52

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •