Hi Leute, ich habe vor kurzem erfolgreiche meine H-brücke aufgebaut und die auch schon geproggt..das Anfangsprogramm war jedoch relativ simpel und das hoch und runterzählen der PWM hat der hauptprozzi. Ich hab es so programmiert, dass ich über eine Softwareserielle immer einen wert schick (2 räder, 2 brücken, 2 serielle)
-1023 bis -1= pwm links, 0=stopp,1 bis 1023 pwm rechts, dass sie die werte die ich vom hauptprozzi schick.
Jetzt will ich allerdings nicht mehr vom hauptprozzi aus anfahren und abbremsen lassen, sonder will das die brücke übernehmen lassen, doch bisher hab ich es nicht gebacken gekriegt, wer kann mir helfen?
( Hauptprozzi M16, Brücke M8 )
Hier mal das vorherige Programm und den einenregelungsversuch
Nicht funktionierende Eigenregelung:Code:$regfile = "m8def.dat" $crystal = 16000000 $baud = 19200 Config Pinb.1 = Output Config Pinb.2 = Output Config Pind.5 = Output Config Pind.6 = Output Config Pind.7 = Output Enable Interrupts Dim A As Word Dim I As Integer Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8 Open "Comc.3:19200,8,n,1" For Input As #1 Do Portd.6 = 1 Portd.7 = 1 Input #1 , I Print I Select Case I Case Is > 0 : Gosub Rechts Case 0 : Gosub Stopp Case Is < 0 : Gosub Links End Select Loop Links: A = I * -1 Pwm1a = 0 Pwm1b = A Return Rechts: Pwm1a = I Pwm1b = 0 Return Stopp: Pwm1a = 0 Pwm1b = 0 Return End
Vielleicht steh ich ja auch auf der leitung oder man kann es viel einfacher machen..bitte helft mir, bin halt nicht der progger vor dem herren..Code:$regfile = "m8def.dat" $crystal = 16000000 $baud = 19200 Config Pinb.1 = Output Config Pinb.2 = Output Config Pind.5 = Output Config Pind.6 = Output Config Pind.7 = Output Enable Interrupts Dim A As Word Dim I As Integer Dim L As Integer Dim R As Integer Dim R1 As Integer Dim S1 As Integer Dim S2 As Integer Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8 Open "Comc.3:19200,8,n,1" For Input As #1 Portd.6 = 1 Portd.7 = 1 Do I = Inkey(#1) Select Case I Case Is > 0 : Gosub Rechts Case 0 : Gosub Stopp Case Is < 0 : Gosub Links End Select Loop Links: A = I * -1 If R > 0 Then For R1 = R To 0 Step -25 Pwm1a = R1 Pwm1b = 0 Next End If If L < 1 Then For L = 0 To A Step 25 Pwm1b = L Pwm1a = 0 Next End If Pwm1b = A Pwm1a = 0 Return Rechts: If A > 0 Then For L = A To 0 Step -25 Pwm1b = L Pwm1a = 0 Next End If If R < 1 Then For R = 0 To I Step 25 Pwm1a = R Pwm1b = 0 Next End If Pwm1a = I Return Stopp: If A > 0 Then For S1 = A To 0 Step -50 Pwm1b = S1 Pwm1a = 0 Next End If If R > 0 Then For S2 = R To 0 Step -50 Pwm1a = S2 Pwm1b = 0 Next End If Return End
Gruss Gobstar







Zitieren

Lesezeichen