Hallo JoeM1978,
erst mal vielen Dank für deine Mühe ,aber ich muss dir leider mitteilen ,dass dein Code bei mir noch nicht ganz läuft.Die Motoren summen einfach die ganze Zeit.
Wenn ich die Steuerknüppel bewege sogar ein bisschen (glaube ich ) mehr. Werde noch mal ein bisschen weiter prokeln.
Da ich leider zur Zeit kein keine Rs-232 Auswertung zur Verfügung habe(auf das Thema antwortet mir auch keiner mehr) ,kann ich dir leider auch nicht genau sagen ,was der Fehler ist.
Zu dem anderen Code ganz unten : der funktioniert leider auch nicht ,da ,obwohl ich Pwm ausgeschaltet und Port auf Null gesetzt habe ,trotzdem ein Pwm Signal an den Treiber gesendet wird.
Hoffe du kannst mir helfen
Hier noch mal dein von mir übertragener Code:
Code:$regfile = "m32def.dat" $crystal = 16000000 $baud = 9600 $hwstack = 32 $swstack = 32 $framesize = 32 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) 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) Geschwindigkeit = Geschwindigkeit - 85 'Wenn der Wert vom RC-Kanal etwa 90 bis 210 beträgt ... Geschwindigkeit = Geschwindigkeit * 2 ' ... grob umrechnen um innerhalb 0 bis 255 zu sein fürs PWM-Signal Select Case Geschwindigkeit ' sicherstellen, das keine Falschen Werte durchkommen Case Is >= 255 : Geschwindigkeit = 255 ' maximalwert 255 Case Is <= 15 : Geschwindigkeit = 0 ' Untere Schwelle, das der Motor auch wirklich still stehen kann 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 "Fehler bei Drehrichtung Motor1" ' bei ungültigen Werten fehler anzeigen End Select Pwm1a = 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 "Fehler bei Drehrichtung Motor2" ' bei ungültigen Werten fehler anzeigen End Select Pwm1b = Geschwindigkeit ' Geschwindigkeit Motor 2 regeln Case Else Print "Fehler bei Auswahl des Motors" ' bei ungültigen Werten fehler anzeigen End Select Print "->Motor=" ; Motor ; " ->Richtung=" ; Drehrichtung ; " ->Geschwindigkeit=" ; Geschwindigkeit 'Werte anzeigen als Kontrolle End Sub







Zitieren

Lesezeichen