www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Timer & PWM


Autor: Karlheinz Druschel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leuts,

ich bin nun mal ein Einsteiger, deshalb stelle ich vielleicht eine
doofe Frage, aber ich bin ja lernbereit :-)
Ich muss für eine Motorsteuerung ein PWM Signal erzeugen.
Ok, mit den AVR´s geht das ja relativ einfach über den PWM Mode vom
Timer 1.
Aber ich will ja lernen und eine eigene Routine zum Erzeugen von
PWM-Signalen schreiben.
Üblicherweise nehme ich dazu eine Zähler, zähle hoch und wieder runter,
....
Aber der Timer 1 bietet mir ja eine Auflösung von 16 bit (PWM nur 8,9
oder 10 Bit).
Was spricht dagegen, die beiden Compare-Interrupts des Timers 1 zu
nutzen ?
Also Timer 1 bestimmt die Frequenz des Signals. Er zählt von 0 bis zum
Comparewert und wird automatisch zurückgesetzt. In der
Compate-Interruptroutine für CompareA setzte ich das PWM Signal
zurück.
Damit bestimme ich die Frequenz des Signals.
Compare B benutze ich für die Impulsbreite. D.h. in der entsprechenden
Interruptroutine setze ich das PWM Signal auf 1.
Wenn also der Timer anfängt zu zählen und den Comparewert B erreicht
(der kleiner sein muss als der Wert CompareA), dann wird das Signal
gesetzt.
Beim erreichen von CompareA wird das Signal gelöscht und der Timer
setzt sich automatisch zurück.
Sollte dies nicht auch ein brauchbares PWM-Signal geben ?

Greetings
Karlheinz

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Viele Wege führen nach Rom. Du kannst eine PWM auch vollständig in
Software machen.

Aber das jemand eine Motorspannung mit 16 Bit einstellen will, sehe ich
zum ersten mal. 8 Bit sollten allemal reichen.



Peter

Autor: Karlheinz Druschel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na wie gesagt, mir fehlt da ein wenig die erfahrung mit PWM.
Ich denke halt generell, bei 16 Bit habe ich eine höhere Auflösung als
bei 8 Bit, kann also feiner dran rumspielen.
Ist ja nur so zum testen ....



Greetings
Karlheinz

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Vorsicht mit CTC-Betrieb. Wenn ich es recht verstanden habe wird schon
beim 1.Compareereignis zurückgesetzt(sofern eingestellt)Wenn möglich
ohne CTC und in CompareA-ISR Timer1 auf 0 setzen.

MFG Uwe

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.