Timerproblem bei PWM?

Gast #60985
Hallo,
kann es sein, daß beim Programmieren der PWM (ATMega8) Probleme mit dem
Timing auftreten können?. Als Einzelanwendung läßt sich PWM
(Timer1,10bit,ohne Prescaler,8MHZ) problemlos aktivieren. Wenn PWM
jedoch in eine etwas umfangreichere Schleife zur Abfrage mehrerer
ADC-Ports zusammen mit einer Stoppuhr(Timer0)eingebaut
wird,funktioniert zwar die Stoppuhr, jedoch nicht mehr PWM. Erst wenn
viele Abfragen wieder gelöscht werden, die Stoppuhr jedoch belassen
wird,funktioniert der PWM wieder.
Kann mir jemand Tips geben??

mfg Helmut
Timer:
  in temp,sreg      ; Statusregister sichern
  push temp
  ldi temp, 150      ; Timer 0 auf 150 einstellen
...
  out sreg,temp
  pop temp
  reti


Kein Wunder, das da nichts mehr geht.

Du lädst temp mit sreg, ohne es vorher zu sichern.
Dafür lädst Du am Ende sreg mit 150 und temp mit sreg.

Und dann noch ein "rjmp Hauptlcd" mitten ausm Interrupt ist ein ganz
böses Foul.


Peter
Gast
Hallo Peter,
wie sollte ich es denn deiner Meinung nach besser machen. Komisch ist,
daß genau mit diesem Timercode ein anederes Ladegerät seit 2 Jahren
einwandfrei funktioniert.

gruß Helmut
Gast
Hallo Peter,
vielen Dank für den Tipp. Ich habe das Programm Timer.asm hier aus dem
Forum (Codesammlung) verwendet und modifiziert. Vermutlich ist mir
dabei ein Fehler unterlaufen. Wenn ich alles richtig verstanden
habe, muß die Interruptroutine etwa so aussehen:

in temp, sreg
push temp
   .
   .
   .
pop temp
out sreg,temp

Wäre das so richtig, um das Statusregister zu sichern?


gruß Helmut
Damit hast Du nur das sreg gesichert, das temp zerstörst Du aber immer
noch.

Kleiner Tip:
Ich nehme für Interrupts und das Mainprogramm verschiedene Register,
dann braucht man nur noch das sreg zu sichern und nichts weiter.


Peter

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 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.