Benjamin Ihrig schrieb:
> Danke für die Antwort, die FAQs sind echt informativ. Die zwei Sekunden
> bekomme ich aber mit PWM nicht hin. Bei 16Mhz Takt und einem Prescaler
> von 1024 bin ich immernoch bei 15625 Ausführungen pro Sekunde.
falsch gerechnet.
Welchen Top Wert brauchst du, damit bei einer Frequenz von 16Mhz und
einem Vorteiler von 1024 damit ein PWM Zyklus 2s (also 2000ms) dauert?
2000 * 16000 / 1024 = 31250
31250 ist in Reichweite eines 16 Bit Wertes. Wenn du also einen PWM
Modus nimmst, bei dem du den Top Wert vorgeben kannst, zb Modus 14, dann
stellst du das ICR1 Register auf 31250 und du kriegst bei 16Mhz und
einem Vorteiler von 1024 genau 2 PWM Zyklen in der Sekunde. Jeder PWM
Zyklus ist eine komplette SChwingung, ergo ergeben sich 2Hz am Pin.
Da du allerdings den PWM Pin nicht frei hast, sondern am Pin PD2
rausgehen willst, kann der Timer das nicht selber regeln, sondern du
musst dich an die Interrupts halten, und in der ISR den Pin selbst
umschalten.
Tja. Und der Rest ist jetzt nur noch eine Herleitung der Formel, wie du
den Stellbereich von 0 bis 255 auf den Zeitbereich von 20 bis 2000
abbildest und das wiederrum weiter zu einem TOP (Register ICR1) Wert
umrechnest. Den setzt du und wenn alles richtig ist, dann toggelt der
Pin in den gewünschten Zeiten. D.h. plus minus ein kleiner Fehler, weil
sich die Umrechnungen nicht in ganzzahligen Vielfachen ausgehen.
Bei den kleineren Zeiten kann es auch sinnvoll sein, einen kleineren
Vorteiler zu nehmen, weil du ja deine Zeitabstufung nur in Schritten
dieses Vorteilers möglich ist. Das kann man aber zb in Excel alles mal
mit verschiedenen Vorteilern durchspielen und dort ablesen, ab welchen
Zeiten (und damit ab welchen Stellwerten) ein kleinerer Vorteiler
möglich ist. Generell willst du immer den kleinsten Vorteiler nehmen,
der geht. Ein Vorteiler ist dann geeignet, wenn du damit einen TOP Wert
erhältst, der kleiner als 65536 ist.