- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 13

Thema: Pwm Motorsteuerung mit PCINT1

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Okay - weshalb der EEPROM-Speicher verwendet wird, verstehe ich zwar nicht, aber das macht auch nichts...

    Wie gesagt - ich würde E nicht durch irgendwelche unkontrollierten Additionen und Subtraktionen manipulieren, die schnell mal außer Kontrolle geraten können wenn sie ungewollt mehrfach hintereinander ablaufen, sondern diese Variable ganz sauber mittels E=0 oder E=1 auf den gewünschten Wert setzen. Dann macht es nämlich nichts, wenn dieser Befehl ein zweites oder drittes mal ausgeführt wird.

    Aber da ist noch was anderes:

    Motor1 bis Motor4 und Freischalten sind als Ausgänge konfiguriert - und in diesem Fall darfst Du nicht die Pin-Register, sondern musst die Port-Register nehmen!

    Also Freischalten Alias PORTD7, Motor1 Alias PORTB.1 usw.

    Versuch das mal...


    Was macht die Schaltung denn bisher überhaupt? Erzeugt sie wenigstens schon mal ein PWM-Signal?

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    29.01.2013
    Beiträge
    22
    Ja also das mit dem stellen verschieben durch den PCint1 funktioniert nur das mit dem auf Null setzten nicht : sprich zurücksetzen

    was hättest du den sonst für ne Möglichkeit als vorschlag ;D

    und beim Gleichsetzten Z.B. M=2 behält der den Wert nicht wenn er aus dem Interrupt springt
    Geändert von Balu18 (09.03.2013 um 15:56 Uhr)

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Was heißt denn er "behält" den Wert nicht?

    Und hast Du in der PWM2-ISR den Befehl M=M*0 ersetzt durch M=0?

    Und wie hast Du es jetzt gelöst, dass bei E=1 die ganze Verschieberei in der ISR übersprungen wird? D.h. wie "springst" du jetzt aus der ISR PWM1?

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    29.01.2013
    Beiträge
    22
    Also das ist jetzt mein aktueller code:
    PHP-Code:
    $regfile "m168def.dat"
    $crystal 8000000


    Config Pinc.0 
    Input
    Config Pinc.1 
    Input
    Config Pinc.2 
    Input
    Config Pinc.3 
    Input
    Config Pinc.4 
    Input
    Config Pinc.5 
    Input
    Config Pind.2 
    Input


    Config Pinb.1 
    Output
    Config Pinb.2 
    Output
    Config Pind.5 
    Output
    Config Pind.6 
    Output

    Motor1 Alias Portb.1
    Motor2 Alias Portb.2
    Motor3 Alias Portd.5
    Motor4 Alias Portd.6
    Freischalten Alias Portd.7

    Pind.2 
    1


    Enable Interrupts

    Enable Pcint1

    On Pcint1 Pwm1

    Pcmsk1 
    = &B11111111

    Config Timer1 
    Pwm Pwm Compare A Pwm Clear Up Compare B Pwm Clear Up Prescale 8
    'Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up

    $eeprom                                                     '
    EEprom beschreiben

    Label1
    :
    Data 128 192 64
    $data

    Dim M 
    As Byte
    Dim N 
    As Byte
    Dim X 
    As Byte
    Dim Y 
    As Byte
    Dim A 
    As Byte
    Dim B 
    As Byte
    Dim C 
    As Byte
    Dim D 
    As Byte
    Dim E 
    As Byte



    0
    0
    0
    0
    0



    Do


       
    Readeeprom A M                                         'Auslesen der Daten aus dem EEprom und anschließende Ausgabe
       Compare1b = A



       Freischalten = 1

    Loop

    Pwm1:

       If E = 1 Then

          Return

       End If

       If Pinc.0 = 0 Then

          M = 2
          N = 2
          E = 1

       End If

       If Pinc.1 = 0 Then

          M = 1
          N = 1
          E = 1

       End If

       If Pinc.2 = 0 Then

          X = 2
          Y = 1
          E = 1

       End If

       If Pinc.3 = 0 Then

          M = 2
          N = 1
          E = 1

       End If

       If Pinc.4 = 0 Then

          M = 1
          N = 2
          E = 1

       End If

       If Pinc.5 = 0 Then

          X = 1
          Y = 2
          E = 1

       End If

    Return


    End 
    Da habe ich jetzt den INT0 rausgenommen um mich erstmal darum zu kömmern das das andere funzt
    Mit behält meine ich das der zum tasterpassende wert nur solange beibehalten wird wie ich den Taster drücke sobald ich ihn loslasse springt er wieder ins Normalprogramm.

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    [Glaskugel]

    Was heißt "Normalprogramm?

    [/Glaskugel]

    Das einzige was feststeht ist, dass die Variable E beim ersten Tastendruck auf 1 gesetzt wird, und damit alle weiteren Tastendrucke blockiert sind, weil sie nirgendwo mehr auf 0 zurückgesetzt hat.

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    29.01.2013
    Beiträge
    22
    Also Danke Sauerbruch für die hilfe
    i wie hab ich das ganz durch probieren alleine hinbekommen die zipps waren trotzdem gut

    hier jetzt mein endcode vill kannst du ja dann verstehen was ich vorhatte

    PHP-Code:
    $regfile "m168def.dat"
    $crystal 8000000


    Config Pinc.0 
    Input
    Config Pinc.1 
    Input
    Config Pinc.2 
    Input
    Config Pinc.3 
    Input
    Config Pinc.4 
    Input
    Config Pinc.5 
    Input
    Config Pind.2 
    Input


    Config Pinb.1 
    Output
    Config Pinb.2 
    Output
    Config Pind.5 
    Output
    Config Pind.6 
    Output

    Motor1 Alias Portb.1
    Motor2 Alias Portb.2
    Motor3 Alias Portd.5
    Motor4 Alias Portd.6
    Freischalten Alias Portd.7

    Pind.2 
    1


    Enable Interrupts

    Enable Pcint1
    Enable Int0

    On Pcint1 Pwm1
    On Int0 Pwm2

    Config Int0 
    Falling
    Pcmsk1 
    = &B11111111

    Config Timer1 
    Pwm Pwm Compare A Pwm Clear Up Compare B Pwm Clear Up Prescale 8
    'Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up

    $eeprom                                                     '
    EEprom beschreiben

    Label1
    :
    Data 128 192 64
    $data

    Dim M 
    As Byte
    Dim N 
    As Byte
    Dim X 
    As Byte
    Dim Y 
    As Byte
    Dim A 
    As Byte
    Dim B 
    As Byte
    Dim C 
    As Byte
    Dim D 
    As Byte
    Dim E 
    As Byte



    0
    0
    0
    0
    0



    Do


       
    Readeeprom A M                                         'Auslesen der Daten aus dem EEprom und anschließende Ausgabe
       Compare1b = A



       Freischalten = 1

    Loop

    Pwm1:


       If Pinc.0 = 0 Then

          M = 2
          N = 2
          E = 1

       End If

       If Pinc.1 = 0 Then

          M = 1
          N = 1
          E = 1

       End If

       If Pinc.2 = 0 Then

          X = 2
          Y = 1
          E = 1

       End If

       If Pinc.3 = 0 Then

          M = 2
          N = 1
          E = 1

       End If

       If Pinc.4 = 0 Then

          M = 1
          N = 2
          E = 1

       End If

       If Pinc.5 = 0 Then

          X = 1
          Y = 2
          E = 1

       End If

    Return

    Pwm2:

       M = 0
       N = 0
       X = 0
       Y = 0

    Return

    End 
    Lg der Balu

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.01.2007
    Ort
    Göttingen
    Beiträge
    706
    Na, super!

    Dan kannste ja noch alle Zeilen rausschmeißen, in denen die Variable "E" vorkommt (schadet zwar nicht, aber wegen der Übersichtlichkeit)

    Und Pind.2=1 ist glaube ich auch nur ein "Verwirrer"...

    Viel Erfolg noch beim Ausbau auf 4 Taster

Ähnliche Themen

  1. PWM Motorsteuerung
    Von daniel.weber im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 08.03.2008, 11:41
  2. PWM Motorsteuerung probleme
    Von homedom im Forum Elektronik
    Antworten: 7
    Letzter Beitrag: 07.01.2008, 13:22
  3. PWM für Motorsteuerung
    Von julien im Forum Elektronik
    Antworten: 17
    Letzter Beitrag: 06.03.2007, 13:28
  4. Denkfehler bei motorsteuerung nFET mit PWM
    Von FoCus im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 01.03.2007, 14:35
  5. Antworten: 7
    Letzter Beitrag: 12.07.2006, 00:52

Berechtigungen

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

Labornetzteil AliExpress