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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren