Bei einem prescale von 1 zählt der Timer um 1 hoch/runter pro 1 Clocktakt. Bei 8MHz also mit 8MHz. Durch den Wechsel von Hoch-/Runterzählen kommt noch der Faktor 1/2 dazu und wir sind bei 4MHz für f.
Für eine Aufdröselung der einzelnen PWM-Modi ist das Manual sehr ausführlich. Wie die PWM sich verhält, wenn TOP (ICR1) und OCR1x geändert werden, ist da auch ersichtlich. Dummerweise kannst du die nicht gleichzeitig ändern, aber die Änderung der Werte dürfte nicht allzu groß sein, denn du schraubst ja per Hand am Poti.
Programmtechnisch würd ich den ADC-IRQ nehmen und dort die Werte neu setzen. Über ne Schleife geht auch, falls du Probleme hast den IRQ korrekt zu bedienen.
Die Genauigkeit des ADC ist mit 10bit um den Faktor 64 kleiner als die Auflösung vonTimer1. Bei einer Bandbreite von nur 10kHz würde das für ne Genauigkeit von rund 10MHz ausreichen.
Ein ADC-Wert von 2^9 soll bei etwa 40kHz landen, was einem T von 25µs entspricht und ICR1 = 100 bei 8MHz (oder 200?). Ein Inkrement weiter bei ICR1=101 ist T=25µs + 1/4MHz, was etwa 39604Hz entspricht.
Der Zusammenhang zwischen ADC-Wert und f ist dann umgekehrt proportional. Ich hab's jetzt nicht genau durchgerechnet, wie die Auflösung in Anhängigkeit von f ist, aber ich fürchte, das es weniger genau ist, als ich oben geschrieben habe![]()
Lesezeichen