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
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.
Ä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.
Es hat sich erledigt. Ich benutze jetzt einfach den PWM des counter2. Vielen Dank für dich Hilfe. Gruß, Tobias
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.