www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem mit PWM-Routine


Autor: Bernhard Mayer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich hab ein kleines Problem mit einer PWM-Routine die über den
Timer-Overflow-Interrupt gesteuert wird. Der code sieht so aus:

; timer overflow interrupt
tint:  clc
  cp t4, p0
  brlo ipwm1
  cbi PORTD, MOTAPWM
ipwm1:  clc
  cp t4, p1
  brlo ipwm2
  cbi PORTD, MOTBPWM
ipwm2:  inc t4
  brcc iende
  sbi PORTD, MOTAPWM
  sbi PORTD, MOTBPWM
  clc
iende:  reti

t4 ist der schleifenzähler, er wird sonst nirgends in dem programm
verwendet. in p0 und p1 steht der jeweilige wert für die Pulsbreite
(0<x<255). MOTAPWM und MOTBPWM stehen für den jeweiligen Pin.

Das problem ist jetzt, dass es nicht funktioniert, wenn p0 kleiner als
p1 ist und wenn p1 0 oder 255 ist. und ich hab jetzt keinen blassen
schimmer, wo ich da suchen könnte. kann mir da jemand helfen?

Danke
Bernhard

Autor: Bernhard Mayer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry wenn ich euch auf den geist gehe, aber hat keiner ne ahnung was da
falsch laufen könnte?

Danke
Bernhard

Autor: Dennis Brücke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Bernhard,

schau doch mal in der Suche, da habe ich vor 2-3 Wochen das gleiche
Problem gehabt, mit Software PWM... dort ist ein Funktionsfähiger Code
mit erklärung...

Gruß Dennis

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Kann nicht gehen, weil
<ipwm2:  inc t4> kein C-Flag beeinflusst
<brcc iende> "brne iende" sollte besser gehen.
Übrigens der ganze Ablauf ist etwas ungünstig, besser wäre eventuell:

; timer overflow interrupt
tint: ;S-Reg sichern!
  inc t4
  brne ipwm1
  sbi PORTD, MOTAPWM
  sbi PORTD, MOTBPWM
  rjmp iende
ipwm1:  cp t4, p0
  brlo ipwm2
  cbi PORTD, MOTAPWM
  cp t4, p1
  brlo iende
  cbi PORTD, MOTBPWM
iende: ;S-Reg auf alten Wert!
  reti

S-Register sichern/zurückschreiben nicht vergessen!!

viel Erfolg, Uwe

Autor: Bernhard Mayer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke!

Habs jetzt mit der Methode vom Dennis probiert und das hat super
hingehaun. und so werd ichs jetzt lassen.
das mit dem SREG hab i no ned gewusst, ist jetzt aber auch drin.

Bernhard

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.