Forum: Mikrocontroller und Digitale Elektronik Problem mit PWM-Routine


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Bernhard Mayer (Gast)


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

von Bernhard Mayer (Gast)


Lesenswert?

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

Danke
Bernhard

von Dennis Brücke (Gast)


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

von Uwe (Gast)


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

von Bernhard Mayer (Gast)


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]
  • [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.