Poste mal den jetzigen Code hier per codeeinfügefunktion bei erweiterte Antwort - dann braucht man sich den nicht runterladen.
Leider habe ich keine Code - habe auch nur den von der RN-Control...
Poste mal den jetzigen Code hier per codeeinfügefunktion bei erweiterte Antwort - dann braucht man sich den nicht runterladen.
Leider habe ich keine Code - habe auch nur den von der RN-Control...
Hier :
Code:$regfile = "m32def.dat" $crystal = 16000000 $baud = 9600 $hwstack = 32 $swstack = 32 $framesize = 32 Config Portd.7 = Output Config Portd.7 = Output Config Pinc.6 = Output 'Linker Motor Kanal 1 Config Pinc.7 = Output 'Linker Motor Kanal 2 Config Pind.4 = Output 'Linker Motor PWM Config Pinb.0 = Output 'Rechter Motor Kanal 1 Config Pinb.1 = Output Config Pind.5 = Output 'Rechter Motor PWM Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up Pwm1a = 0 Pwm1b = 0 Tccr1b = Tccr1b Or &H02 'Prescaler = 8 Dim Rckanal As Word Dim Lala As Word Sound Portd.7 , 400 , 450 Sound Portd.7 , 400 , 250 Sound Portd.7 , 400 , 450 Wait 2 Main: Waitms 10 Pulsein Rckanal , Pind , 2 , 1 'Messung Zeit zwischen 1 und 0 Pegel Waitms 10 Pulsein Lala , Pind , 3 , 1 'Messung Zeit zwischen 1 und 0 Pegel Waitms 10 Select Case Rckanal Case 90 To 140 Portc.6 = 1 Portc.7 = 0 Portd.4 = 1 Pwm1a = 600 Waitms 10 Case 160 To 200 Portc.6 = 1 Portc.7 = 0 Portd.4 = 1 Pwm1a = 600 Waitms 10 Case Else Portc.6 = 1 Portc.7 = 0 Portd.4 = 1 Pwm1a = 0 Waitms 10 End Select Select Case Lala Case 90 To 140 Portb.0 = 1 Portb.1 = 0 Portd.5 = 1 Pwm1b = 600 Waitms 10 Case 160 To 200 Portb.0 = 1 Portb.1 = 0 Portd.5 = 1 Pwm1b = 600 Waitms 10 Case Else Portb.0 = 0 Portb.1 = 1 Portd.5 = 1 Pwm1b = 0 Waitms 10 End Select Goto Main
Versuche mal jeweils im case else die Portd.4 + 5 = 0 zu setzen. PWM ist dann nicht nur 0, sondern ganz am Port aus.
Wenn das klappt dann denke ich ist es das gleiche was ich mal hatte. Der Zähler vom PWM zählt irgendwie falschrum - glaube so kann man das sagen
Bei 0 volle Pulle
Hängt irgendwie zusammen mit:
Compare A Pwm = Clear Up, Compare B Pwm = Clear Up
...aber so weit bin ich noch nicht.
wenn ich das so mache :
und dann einmal den Kanal 1 bewege ,dann läuft der Motor zwar an,aber ich kann ihn nicht mehr stoppen .Genau so läuft es mit Kanal 2 auch . Häää ??????Code:$regfile = "m32def.dat" $crystal = 16000000 $baud = 9600 $hwstack = 32 $swstack = 32 $framesize = 32 Config Portd.7 = Output Config Portd.7 = Output Config Pinc.6 = Output 'Linker Motor Kanal 1 Config Pinc.7 = Output 'Linker Motor Kanal 2 Config Pind.4 = Output 'Linker Motor PWM Config Pinb.0 = Output 'Rechter Motor Kanal 1 Config Pinb.1 = Output Config Pind.5 = Output 'Rechter Motor PWM Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up Pwm1a = 0 Pwm1b = 0 Tccr1b = Tccr1b Or &H02 'Prescaler = 8 Dim Rckanal As Word Dim Lala As Word Sound Portd.7 , 400 , 450 Sound Portd.7 , 400 , 250 Sound Portd.7 , 400 , 450 Wait 2 Main: Waitms 10 Pulsein Rckanal , Pind , 2 , 1 'Messung Zeit zwischen 1 und 0 Pegel Waitms 10 Pulsein Lala , Pind , 3 , 1 'Messung Zeit zwischen 1 und 0 Pegel Waitms 10 Select Case Rckanal Case 90 To 140 Portc.6 = 1 Portc.7 = 0 Portd.4 = 1 Pwm1a = 600 Waitms 10 Case 160 To 200 Portc.6 = 1 Portc.7 = 0 Portd.4 = 1 Pwm1a = 600 Waitms 10 Case Else Portc.6 = 1 Portc.7 = 0 Portd.4 = 0 Waitms 10 End Select Select Case Lala Case 90 To 140 Portb.0 = 1 Portb.1 = 0 Portd.5 = 1 Pwm1b = 600 Waitms 10 Case 160 To 200 Portb.0 = 1 Portb.1 = 0 Portd.5 = 1 Pwm1b = 600 Waitms 10 Case Else Portb.0 = 0 Portb.1 = 1 Portd.5 = 0 Waitms 10 End Select Goto Main
Lass doch einfach mal die Werte von den 2 Kanälen über Print an die Konsole zurückgeben und schau dir
an, was die für Werte annehmen... sowas hilft ungemein bei der Fehlersuche.
Sowas kannst auch mit den anderen werten mal machen um die zu kontrollieren.
und bei...
müssen da nicht unterstriche zwischen die wörter ? meckert der nicht beim kompilieren ?Compare A Pwm = Clear Up
D.7 ist doppelt configuriert ganz am Anfang.
... und die ausgänge der motoren...
sind die absichtlich bei 2 Servostellungen identisch geschaltet ?Case 90 To 140
Portb.0 = 1
Portb.1 = 0
Portd.5 = 1
Pwm1b = 600
Waitms 10
Case 160 To 200
Portb.0 = 1
Portb.1 = 0
Portd.5 = 1
Pwm1b = 600
Waitms 10
Also ,das Anzeigen von Werten funktioniert tadellos.Es kommen je nach dem immer Werte von 100 bis 200 raus.
Was für Unterstriche ?? Funktionier bei mir ohne ,ohne Probleme .müssen da nicht unterstriche zwischen die wörter ? meckert der nicht beim kompilieren ?
stört doch nicht .D.7 ist doppelt configuriert ganz am Anfang.
ist doch egal oder ??...sind die absichtlich bei 2 Servostellungen identisch geschaltet ?
an sich schon... aber da bei "Select Case Rckanal" alle 3 Fälle die selbe Motorrichtung
haben wundert mich nicht, wenn er nur in eine Richtung läuft.
Noch was... wenn der Wert für Nullstellung nicht genau zwischen 140 und 160 liegt aufgrund
irgendwelcher tolleranzen bekommst du den Motor nie zum stehen und hast keine Kontrolle, ob es funktioniert.
Ausserdem wäre es sicher interessant für dich zu kontrollieren, wo Max und Min deines Signals liegen und ob die
Mittelstellung überhaupt in diesem vorgegebenen Bereich (140-160) liegt.
Geändert von JoeM1978 (04.01.2013 um 17:39 Uhr)
Lesezeichen