-
probleme mit schleife
hallo
hab mal wieder ein Problem rein Theoretisch müsste ich doch mit Declare Subine Schleife auf bauen können die klappt. Jedoch habe ich das Gefühl das irgendwie im Programm das next bei der Motorsteuerung stört und nicht nach den Befehlen geht in der Do-Schleife, sondern nach dem next was ich allerdings nicht möchte habe schon viel Probiert aber vielleicht habt ihr eine Idee !!!
hier der Code:
Code:
$regfile = "m8def.dat"
$crystal = 7372800
$baud = 9600
$hwstack = 34
$framesize = 34
$swstack = 34
Dim A As Word
Dim B As Word
Config Portc = &B11111111
Config Adc = Single , Prescaler = Auto , Reference = Internal
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8
Config Pinb.1 = Output
Motor1_pwm Alias Portb.1
Config Pind.4 = Output
Motor1_in1 Alias Portd.4
Config Pind.5 = Output
Motor1_in2 Alias Portd.5
Declare Sub Fahr_v()
Declare Sub Stop_v()
Declare Sub Fahr_r()
Start Adc
Do
B = Getadc(1)
Print B
If B > 200 Then
Stop_v
Else
Fahr_v
End If
Loop
End
Fahr_v:
Motor1_in1 = 1
Motor1_in2 = 0
For A = 255 To 511
Pwm1a = A
Waitms 10
Next
Stop_v:
Motor1_in1 = 1
Motor1_in2 = 1
For A = 255 To 0
Pwm1a = A
Waitms 10
Next
Fahr_r:
Motor1_in1 = 0
Motor1_in2 = 1
For A = 255 To 511
Pwm1a = A
Waitms 10
Next
könnte man vielleicht die Pwm Modulation noch anders ausdrücken wie??
For A = 255 To 511
Pwm1a = A
Waitms 10
Next
gruß
patrick
-
Hi,
hast du die "end sub" vergessen ?
Noch was
For A= 256 to 511
Du hast doch die PWM als 8 Bit deklariert.
Sollte also auch nur bis 255 gehen.
Warum zählst du die überhaupt hoch ?
Gruß
Christopher
-
eigentlich will ich das nicht aber da es nicht gerade anders geht habe ich das so.
sonst macht mein motor komische geräusche läuft langsam an und dann steigt die Amperemeter auf ca. 1.2 Ampere hoch
gruß
patrick
-
Was soll das Hoch bzw. Runterzählen denn bewirken ?
Willst du damit einen Softanlauf machen ?
Gruß
Christopher
-
erstens das und zweitens erstmal so zum test das programm werde ich gleich noch weiter ausbauen.
so es klappt zum mindestens mal so:
Code:
$regfile = "m8def.dat"
$crystal = 7372800
$baud = 9600
$hwstack = 34
$framesize = 34
$swstack = 34
Declare Sub Fahr_v()
Declare Sub Stop_v()
Declare Sub Fahr_r()
Dim A As Word
Dim B As Word
Config Portc = &B11111111
Config Adc = Single , Prescaler = Auto , Reference = Internal
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8
Config Pinb.1 = Output
Motor1_pwm Alias Portb.1
Config Pind.4 = Output
Motor1_in1 Alias Portd.4
Config Pind.5 = Output
Motor1_in2 Alias Portd.5
Start Adc
Do
B = Getadc(1)
Print B
If B >= 200 Then
Stop_v
Else
Fahr_v
End If
Loop
End
Sub Fahr_v:
Motor1_in1 = 1
Motor1_in2 = 0
For A = 255 To 255
Pwm1a = A
Waitms 10
Next A
End Sub
Sub Stop_v:
Motor1_in1 = 1
Motor1_in2 = 1
For A = 255 To 0
Pwm1a = A
Waitms 10
Next
End Sub
-
hallo
danke für die Hilfe chr-mt das andere klappt jetzt auch.
das es nur an dem sub ...... und an dem end sub hängt wenn man es vergisst naja passt schon.
gruß
patrick