-
        

Ergebnis 1 bis 8 von 8

Thema: Software PWM

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    19.07.2004
    Beiträge
    178

    Software PWM

    Anzeige

    Ich habe nun fast jeden Beitrag gelesen den die Suche gefunden hat, blos gings da immer um Hardware PWM.
    Ich Suche einen einfachen Code für Software PWM. Sagen wir einfach mal 2 oder 3 Leds die nacheinander an- und ausgehen.


    Danke schonmal

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.02.2005
    Ort
    Salzburg
    Alter
    37
    Beiträge
    464
    Um Led´s nacheinander ein und auszuschalten brauchst du keine PWM!
    Mit PWM kannst dimmen. Zum ein und ausschalten reicht eine schleife in der die Pins entsprechend aus und eingeschalten werden.

    MFG

    Vader

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    19.07.2004
    Beiträge
    178
    Das ist mir auch klar... Ich will das sie nacheinander Ein-und Ausfaden! Habe mich vielleicht etwas dumm ausgedrückt.

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    19.07.2004
    Beiträge
    178
    Keiner so nett mir das mal zu erklären? Ich habe zwar das AVR Buch von Roland Walter aber da wird nicht so genau auf mein Anliegen eingegangen..

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    30.10.2005
    Ort
    Mönchengladbach
    Alter
    47
    Beiträge
    114
    Die Vorgehensweise ist ganz simpel, du musst ja für diesen Fall nicht auf eine genaue Einhaltung einer Zykluszeit achten.

    Der Algorithmus sieht so aus:

    Schritt 1: Schalte LED ein
    Schritt 2: Warte Zeit X
    Schritt 3: Schalte LED aus
    Schritt 4: Warte Zeit Y

    Wenn Du X immer kleiner und Y immer größer werden lässt, wird die LED dunkler.

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von Rage_Empire
    Registriert seit
    10.03.2005
    Ort
    Pforzheim
    Beiträge
    710
    Guck mal im Downloadverzeichnis, dort habe ich einen Source für Bascom geschrieben, welcher für so etwas modifiziert werden kann.

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    19.07.2004
    Beiträge
    178
    Ich habs nun schon selber hinbekommen, dass 3 LEDs aufeinmal an- und ausfaden. Nun würde ich die aber gene nach belieben einzeln ansteuern. Also z.B wenn led 1 aus
    led2 an oder wenn led2 halb aus dann led3 an.

    Code:
    '#################################
    '# Software Pulsweitenmodulation #
    '#################################
    
    
    $regfile = "M8def.dat"
    $crystal = 3686400
    
    Ddrd = &B11100000                                           'PD7, PD6,
    PD5 als Ausgänge festlegen, rest Eingang
    Portd = &B00001100                                          'PullUps
    von PD2, PD3 Aktivieren
    
    
    
    Enable Interrupts                                          
    'Interrupts Global einschalten
    
    Enable Timer0
    Config Timer0 = Timer , Prescale = 256
    On Timer0 Ontimer0
    
    Enable Timer1
    Config Timer1 = Timer , Prescale = 8
    On Timer1 Ontimer1
    
    Dim Reverse As Bit
    Dim Helligkeit As Byte
    
    Helligkeit = 255
    
    
    
    
    
    '###Deklarationen###
    
    Led_gr Alias Portd.7                                        'LED Grün
    Led_ge Alias Portd.6                                        'LED Gelb
    Led_ro Alias Portd.5                                        'LED Rot
    Prwata Alias Pind.3                                        
    'Programmwahltaster
    Speed Alias Pind.2
    
    
    Do
    
    Loop
    
    Ontimer0:
    
     Toggle Led_ro
     Toggle Led_gr
     Toggle Led_ge
    
     If Led_ro = 1 Then
      Timer0 = 256 - Helligkeit
     Else
      Timer0 = Helligkeit
     End If
    
    Return
    
    
    
    Ontimer1:
    
     If Helligkeit = 255 Then
      Set Reverse
     End If
    
     If Helligkeit = 1 Then
      Reset Reverse
     End If
    
     If Reverse = 0 Then
       Incr Helligkeit
     End If
    
     If Reverse = 1 Then
      Helligkeit = Helligkeit - 1
     End If
    
    Return

  8. #8
    Erfahrener Benutzer Roboter Experte Avatar von Rage_Empire
    Registriert seit
    10.03.2005
    Ort
    Pforzheim
    Beiträge
    710
    Also dafür gibts 2 Möglichkeiten:

    1. Du verwendest die Timer0 und Timer1, wovon Timer1 zwei PWM-Ausgänge hat, welche durch compare1a und compare1b gesteuert werden kann. Mit dem Timer0 wären dies dann 3 PWM-Signale.

    2. Du lässt einen Timer Zählen. Die LEDs ordnest du dann Werten zu, ab welche diese leuchten sollen. Beispiel:

    If timer1 >100 then led1=1 else led1=0
    if timer1 >150 then led2=1 else led2=0
    if timer1 >200 then led3=1 else led3=0


    So könnte man es ungefär machen. Mit der 2. Variante Kannst du noch mehr LEDs steuern.

Berechtigungen

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