AVR Timer & PWM

Gast #49438
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
#49439
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
Gast #49440
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
Gast #49441
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

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