PWM und counter0 am ATmega16

Gast #2395589
Lesenswert?
• ▲
▼
Hallo zusammen,
kann man den PWM und den counter0 des ATmega16 gleichzeitig benutzen? 
Ich bekomme es nämlich nicht hin. Und habe auch gelesen das PWM 
irgendwie immer den counter0 braucht, bin mir da aber nicht sicher. Wäre 
nett wenn mir einer von euch Experten mal sagen könnte ob es wirklich 
nicht geht und wenn doch wie man den counter0 in dem Fall initialisieren 
müsste.

Gruß, Tobias
Gast #2396026
Lesenswert?
• ▲
▼
Grundsätzlich geht das. Du kannst auf dem Timer/Counter0 eine PWM in 
Hardware betreiben und dir zusätzlich einen Interrupt generieren lassen, 
wenn der TOP Wert des Timer/Counter0-Zählers erreicht wird. Schau dir 
die Timing-Diagramme im Datenblatt ab Figure 31 (im Datenblatt 
2466Q–AVR–05/08) an.

Diese Interrupts kannst du in einem Überlaufzähler zählen und hast damit 
einen Dauerzähler = Überlaufzähler*TOP-Wert+Zählerstand großen, stetig 
(*) weiter zählenden Wert (der gewünschte Counter).

Wenn du eine PWM mit wechselnder Frequenz machst, also dynamisch den 
Registerwert änderst, der als TOP-Wert genommen wird, wird die Formel 
entsprechend komplizierter bzw. kannst du mit Zwischensummen arbeiten. 
Ist aber weiter machbar IMHO.

(*) stetig, bis zum Überlauf des Ergebnisses dieser Formel natürlich. 
Das ist dann abhängig davon mit welchen Datentypen der Überlaufzähler 
und der Dauerzähler definiert wurden.
Gast #2396074
Lesenswert?
• ▲
▼
Ähm, wenn du externe Ereignisse mit dem Counter0 zählst geht das IMHO 
so einfach nicht zusammen mit der PWM.

Man könnte aber versuchen pro externem Zählereignis einen Input Capture 
Interrupt auszulösen und die Zahl dieser IRQs in Software mitzählen. Das 
dürfte eine zeitgleich rennende PWM nicht stören. Der Atmega16 hat aber 
auf Timer/Counter0 keine ICP. Da müsste man auf Timer/Counter1 arbeiten. 
Und durch die Laufzeit im Programmcode der ISR sinkt die Höchstfrequenz 
mit der die Ereignisse noch sicher gezählt werden können.

Antwort schreiben

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.

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.