- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 47

Thema: Frage zum Pulsein Befehl

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.05.2012
    Beiträge
    511
    Was für ne fernsteuerung hast du ? Funktioniert die richtig ??
    Ja, funktioniert richtig ,da ich ja sonst keine sinnvollen Ergebnisse herausbekommen würde.
    Kann man evtl die Wege der Servos einstellen oder sogar anzeigen lassen ?
    Nein.
    Meine Funke bringt bei Einstellung > "100% Servoweg" Ergebnisse von : 110<>150<>190
    Meine auch in etwa.

    Ich habe jetzt mal den Ausprobiert :
    Code:
    $regfile = "m32def.dat"
    $crystal = 16000000
    $baud = 9600
    $hwstack = 32
    $swstack = 32
    $framesize = 32
    
    Config Portd.7 = Output
    Config Pind.2 = Input                                       ' Signal 1(a) vom RC-Empfänger
    Config Pind.3 = Input                                       ' Signal 2(b) vom RC-Empfänger
    Config Portc.6 = Output                                     'Motor links
    Config Portc.7 = Output                                     'Motor links
    Config Portb.0 = Output                                     'Motor rechts
    Config Portb.1 = Output                                     'Motor rechts
    Config Portd.4 = Output                                     'PWM links
    Config Portd.5 = Output                                     'PWM rechts
    
    Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 8
    
    Dim Rckanal_a As Word
    Dim Rckanal_b As Word
    
    Dim Motor As Byte                                           ' 1=Motor1 / 2=Motor2 /...
    Dim Drehrichtung As Byte                                    ' 0= Bremsen / 1=links / 2=rechts
    Drehrichtung = 1                                            ' Drehrichtung >>>jetzt manuell auf Links gestellt <<<
    Dim Geschwindigkeit As Word                                 ' Motorgeschwindigkeit
    Geschwindigkeit = 0                                         ' Motorgeschwindigkeit anfangs auf 0
    
    Declare Sub Motorsteuerung(byval Motor As Byte , Byval Drehrichtung As Byte , Byval Geschwindigkeit As Word)
    
    Sound Portd.7 , 400 , 450
    Sound Portd.7 , 400 , 250
    Sound Portd.7 , 400 , 450
    Wait 2
    
    Do
       ' Wert vom RC-Empfänger abfragen und weitergeben
       Pulsein Rckanal_a , Pind , 2 , 1                         ' Wert vom Kanal 1...Motor 1.
       Motor = 1
       Geschwindigkeit = Rckanal_a
       Call Motorsteuerung(motor , Drehrichtung , Geschwindigkeit)       'Daten an Subroutine/Motorsteuerung übergeben
       ' Subroutine hat Motor bearbeitet... weiter zum nächsten
    
       ' Wert vom RC-Empfänger abfragen und weitergeben
       Pulsein Rckanal_b , Pind , 3 , 1                         ' Wert vom Kanal 2...Motor 2.
       Motor = 2
       Geschwindigkeit = Rckanal_b
       Call Motorsteuerung(motor , Drehrichtung , Geschwindigkeit)       'Daten an Subroutine/Motorsteuerung übergeben
       ' Subroutine hat Motor bearbeitet... weiter zum nächsten
    
    Loop
    
    End
    
    
    Sub Motorsteuerung(byval Motor As Byte , Byval Drehrichtung As Byte , Byval Geschwindigkeit As Word)
    
       Select Case Geschwindigkeit
           Case 90 To 140
           Geschwindigkeit = 600
           Drehrichtung = 1
    
           Case 160 To 200
           Geschwindigkeit = 500
           Drehrichtung = 2
    
           Case Else
           Geschwindigkeit = 0
           Drehrichtung = 0
    
       End Select
    
          Select Case Motor                                     ' Welcher Motor soll gesteuert werden ?
          Case 1 : Select Case Drehrichtung                     ' wenn Motor1, in welche richtung soll er drehen ?
                   Case 0 : Portc.6 = 0                         ' Ports für Drehrichtung setzen
                            Portc.7 = 0
                   Case 1 : Portc.6 = 1
                            Portc.7 = 0
                   Case 2 : Portc.6 = 0
                            Portc.7 = 1
                   Case Else
                   Print "Fehler1-Drehrichtung"                 ' bei ungültigen Werten fehler anzeigen
                   End Select
                   Pwm1a = Geschwindigkeit
                   Print "Geschwindigkeit1:_" ; Geschwindigkeit ' Geschwindigkeit Motor 1 regeln
          Case 2 : Select Case Drehrichtung                     ' wenn Motor2, in welche richtung soll er drehen ?
                   Case 0 : Portb.0 = 0                         ' Ports für Drehrichtung setzen
                            Portb.1 = 0
                   Case 1 : Portb.0 = 1
                            Portb.1 = 0
                   Case 2 : Portb.0 = 0
                            Portb.1 = 1
                   Case Else
                   Print "Fehler2-Drehrichtung"                 ' bei ungültigen Werten fehler anzeigen
                   End Select
                   Pwm1b = Geschwindigkeit
                   Print "Geschwindigkeit2:_" ; Geschwindigkeit ' Geschwindigkeit Motor 2 regeln
          Case Else
          Print "Fehler-Motor"                                  ' bei ungültigen Werten fehler anzeigen
          End Select
          Print "Geschwindigkeit:_" ;
    End Sub
    Und bekomme keine Fehlermeldung ,doch es läuft nix.Selbst das Summen hat aufgehört. Ich bekomme nur Werte von der Geschwindigkeit je nach Knüppelstellungen angezeigt.

    Es funktioniert einfach nicht zusammen. Denn getrennt funktioniert alles.

  2. #2
    RN-Premium User Fleißiges Mitglied
    Registriert seit
    19.05.2012
    Ort
    Sigmaringen
    Beiträge
    169
    hat der M32 wirklich PWM-Kanäle auf D.4 und D.5 ?

    Also das Signal vom Timer1=PWM kommt nur auf den Pins raus, die auch mit OC1A und OC1B angegeben sind...
    was bei mir am Atmega8 PortB.1 und PortB.2 sind.

    Das macht es leider oft sehr schwer, wenn man PWM und Interrupt nur begrenzt zur verfügung hat, weil die nicht an jedem Beliebigen Pin/Port funtionieren.
    JAAAA... Microchips kann man essen... aber der Geschmack ist furchtbar.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.05.2012
    Beiträge
    511
    hat der M32 wirklich PWM-Kanäle auf D.4 und D.5 ?
    Ja.

    So ,nach langem Probieren klappt es endlich.
    Hier mein Code.Mit Kanal 1 fahre ich vor und zurück und mit dazugeschaltetem Kanal 2 drehe ich links und rechts.
    Code:
    $regfile = "m32def.dat"
    $crystal = 16000000
    $baud = 9600
    $hwstack = 32
    $swstack = 32
    $framesize = 32
    
    Config Portd.7 = Output
    Config Pind.2 = Input                                       ' Signal 1(a) vom RC-Empfänger
    Config Pind.3 = Input                                       ' Signal 2(b) vom RC-Empfänger
    Config Portc.6 = Output                                     'Motor links
    Config Portc.7 = Output                                     'Motor links
    Config Portb.0 = Output                                     'Motor rechts
    Config Portb.1 = Output                                     'Motor rechts
    Config Portd.4 = Output                                     'PWM links
    Config Portd.5 = Output                                     'PWM rechts
    
    Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 8
    
    Dim Drehrichtung As Word
    Dim Geschwindigkeit As Word
    Dim Schub As Word
    Dim Gerade As Word
    Dim Lala As Word
    
    Declare Sub Motorsteuerung
    
    Sound Portd.7 , 400 , 450
    Sound Portd.7 , 400 , 250
    Sound Portd.7 , 400 , 450
    Wait 2
    
    Do
       Pulsein Geschwindigkeit , Pind , 2 , 1                   'vor / zurück
       Pulsein Drehrichtung , Pind , 3 , 1                      'links / rechts
       Call Motorsteuerung
    Loop
    End
    
    
    
    
    
    Sub Motorsteuerung
    
    
       Select Case Geschwindigkeit
    
           Case 90 To 140
           Schub = 650
           Gerade = 8
           Print "Vorwärts"
    
    
           Case 160 To 200
           Schub = 650
           Gerade = 2
           Print "Rückwärts"
    
    
           Case Else
           Schub = 0
           Print "Stop"
    
       End Select
    
    
       Select Case Drehrichtung
    
           Case 90 To 140
           Portc.6 = 1
           Portc.7 = 0
           Portb.0 = 1
           Portb.1 = 0
    
           Lala = Schub + 100
           Pwm1a = Lala
           Pwm1b = Lala
    
           Case 160 To 200
           Portc.6 = 0
           Portc.7 = 1
           Portb.0 = 0
           Portb.1 = 1
    
           Lala = Schub + 100
           Pwm1a = Lala
           Pwm1b = Lala
    
           Case Else
    
                Select Case Gerade
    
                     Case 8
                     Portc.6 = 0
                     Portc.7 = 1
                     Portb.0 = 1
                     Portb.1 = 0
    
                     Pwm1a = Schub
                     Pwm1b = Schub
    
                     Case 2
                     Portc.6 = 1
                     Portc.7 = 0
                     Portb.0 = 0
                     Portb.1 = 1
    
                     Pwm1a = Schub
                     Pwm1b = Schub
    
                     Case Else
                     Portc.6 = 0
                     Portc.7 = 0
                     Portb.0 = 0
                     Portb.1 = 0
    
                     Pwm1a = Schub
                     Pwm1b = Schub
    
                End Select
    
       End Select
    
    End Sub

  4. #4
    RN-Premium User Fleißiges Mitglied
    Registriert seit
    19.05.2012
    Ort
    Sigmaringen
    Beiträge
    169
    schön wenns klappt.
    hast du denn auch Ausfindig machen können, was genau jetzt der Haken daran war ?
    JAAAA... Microchips kann man essen... aber der Geschmack ist furchtbar.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.05.2012
    Beiträge
    511
    Bis jetzt ist es mir noch unerklärlich, denn wenn bei dir der Code funktioniert hatte ,hätte er bei mir mit den Anpassungen ja auch funktionieren müssen.Doch irgendwie gings bei mir nicht. Welche Version von Bascom nutzt du ??

  6. #6
    RN-Premium User Fleißiges Mitglied
    Registriert seit
    19.05.2012
    Ort
    Sigmaringen
    Beiträge
    169
    Bascom-AVR Version 2.0.7.1 document build 38


    Aber das hat normal nix zu sagen... denn die Befehle usw sind ja die selben
    JAAAA... Microchips kann man essen... aber der Geschmack ist furchtbar.

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    21.05.2012
    Beiträge
    511
    stimmt ,das kann damit nichts zu tun haben .Aber was ist es dann ??

Ähnliche Themen

  1. Frage zum Bascom "Sound"-Befehl
    Von DirkP im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 4
    Letzter Beitrag: 06.04.2012, 13:07
  2. Wert berechnen Pulsein-Befehl
    Von RAM im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 24.01.2011, 17:05
  3. Arbeiten mit dem PULSEIN-Befehl
    Von Powell im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 0
    Letzter Beitrag: 02.07.2007, 15:14
  4. Frage zum Befehl "readmagcard" bzw. abbruch des pr
    Von sephi23 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 29.06.2006, 08:20
  5. Frage zum Befehl outp!
    Von Decca im Forum C - Programmierung (GCC u.a.)
    Antworten: 7
    Letzter Beitrag: 03.03.2005, 13:52

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress