mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik HW\SW - PWM


Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
versuch grad mit drüber im kalren zu werden wie Software und Hardware
PWM
funktionieren.
also Software PWM:
- man hat einen counter den man auf 0 setzt.
- man hat eine Variable die man zb auf 300 setzt,
  dh 300 bei 300 Overflows wird ein Signal ausgegeben, die restliche
  nichts mehr.

man startet einen Timer auf: wenn der Sig_Overflow kommt
-man gibt 1 am Port aus, wenn der counter kleiner als die Variable
 ist, counter hochzählen
-man gibt 0 am Port aus, wenn der counter größer als die variable ist
 counter hochzählen.
bei zb counter = 500 den counter wieder =0 setzten.
Also wurden jetzt bei 300 Interrupts eine 1 ausgegeben, bei 200 eine
0...
FERTIG ?

Hardware PWM:
man startet einen 8 bit Timer, der Timer hat ein Output Compare
Register,
in dem Output Compare Register steht meine Variable zb 200,
den Port setze ich auf 1,
irgendwann kommt ein interrupt, Compare match , das also der Timer den
Wert
200 erreicht hat.
in der Interrupt Routine setzte ich dann den Port auf 0,
wenn der Overflow kommt setze ich den Port wieder auf 1 ... usw ...
dh bis der Timer bei 200 ankommt wird 1 ausgegeben , von 200 bis 255
wird 0
ausgegeben , dann gehts von vorne los ?

stimmt das in etwa oder hab ich's falsch verstanden ?
und der Vorteil von nem HW PWM ist das der uC weniger zu tun hat ?
 chris

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Hardware PWM:
man startet einen 8 bit Timer, der Timer hat ein Output Compare
Register, in dem Output Compare Register steht meine Variable zb
200, den Port setze ich auf 1, irgendwann kommt ein interrupt,
Compare match , das also der Timer  den Wert 200 erreicht hat.
in der Interrupt Routine setzte ich dann den Port auf 0,
wenn der Overflow kommt setze ich den Port wieder auf 1"

Nein. Der Komparator kann den Port selbst setzen und löschen. Du mußt
ihn nur am Anfang passend konfigurieren, dann später einfach den
gewünschten Wert für die Pulsbreite ins Compare-Register schrieben. Der
Rest läuft ganz von selbst.

"stimmt das in etwa oder hab ich's falsch verstanden ?"

Das, was du als Hardware-PWM beschreibst, ist Software-PWM.
Hardware-PWM macht wirklich alles ohne Zutun von Software.

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.