[BASCOM ] Soft PWM

Gast #1627307
Lesenswert?
• ▲
▼
Hallo,

ich versuche auf dem Mega32 mit 16Mhz eine Software PWM zu bauen.
Wenn ich eine Taktfrequenz von ca. 122Hz erzeugen will, dann sollte das 
doch mit einem prescaler von 256 zu machen sein ?!

Das erzeugt aber nur ein wirres hektisches blinken, <Erst mit einem 
prescaler von 1 ist soetwas wie dimmen zu erkennen.

Was mach ich da falsch ??


$regfile = "m32def.dat"
$crystal = 16000000

$lib "mcsbyte.lbx"


Dim Pwm_stufen As Byte
Dim Pwm_wert As Byte
Dim Pwm_zaehler As Byte


Config Portd.4 = Output
Config Portd.5 = Output

Led1 Alias Portd.5
Led2 Alias Portd.4

Const An = 1
Const Aus = 0

Pwm_stufen = 254
Pwm_wert = 0
Pwm_zaehler = 0


'-------- Timer initialisieren ---

Config Timer0 = Timer , Prescale = 1

Enable Timer0
Enable Interrupts

On Timer0 timer0_ueberlauf


Do

' no loop

Loop

End



timer0_ueberlauf:


 If Pwm_zaehler >= Pwm_stufen Then
       Pwm_zaehler = 0
       Incr Pwm_wert
       Else
       Incr Pwm_zaehler

  End If

   If Pwm_wert >= Pwm_stufen Then
    Pwm_wert = 20
   End If


  If Pwm_zaehler < Pwm_wert Then
      Led2 = An
      Else
      Led2 = Aus
 End If


Return
Lesenswert?
• ▲
▼
ja, die ISR wird schon so angesprungen. Der zähler wird ja nur im 
Else-Zweig hochgezählt.. evtl. hast Du einen Denkfehler drin.


versuch es doch mal einfacher so in der ISR:

OnTimer0:
   if Zaehler < Helligkeit then LED=An else LED=aus
   incr Zaehler
return

(Zähler und Helligkeit sind Bytes, Helligkeit setzt Du im Hauptprogramm, 
zähler läßt Du immer überlaufen, somit von 0 bis 255)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.