-
-
Erfahrener Benutzer
Roboter Genie
Wenn du dann mal wirklich die Helligkeit der LED regeln willst, musst du allerdings die Timerfrequenz stark erhöhen. Im Moment kannst du über die Variable Soft_pwm die Led nur zwischen 1/200s und 1,27s einschalten und entsprechend umgekehrt lange aus. Die Wiederholfrequenz ist also etwa 0,8Hz.
Damit man kein Flimmern mehr erkennt, sollte die Wiederholfrequenz des ganzen Ablaufs mindestens 50 Hz sein. Dies musst du dann noch mit der gewünschten Auflösung des PWM multiplizieren. Bei 256 Schritten ergibt sich eine Überlauf Frequenz des Timers von 12800 Hz. Also muss der Timer alle 1250 Takte überlaufen. Ein 8-bit Timer würde vollkommen ausreichen, du kannst das aber auch mit dem 16-bit Timer machen.
Bei 16MHz geht das z.B. mit
Prescale 64 und
Load Timer1, 20
Da die ISR sehr häufig aufgerufen wird, würde ich dort absolut keine unnötigen Befehle machen. Die könnte dann so aussehen:
Isr_von_timer1:
Load Timer1, 20
Incr Counter_pwm
PWM_flag=1
Return
Und die Main Loop so
Do
'... evtl andere Befehle zum Berechnen des Tastverhältnisses (Wert von Soft_pwm)
If Pwm_flag=1 Then
Pwm_flag=0
If Counter_pwm < Soft_pwm Then
Pwm_1 = 1
Else
Pwm_1 = 0
End If
End If
Loop
Gruß
Rolf
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen