Weiß jetzt nicht ? Bei 16 MHZ (geraten) hast du mit Prescale 8 und preload 25536 genau alle 20 mS einen Schnackler ?
Irgendwo steh ich auf'm Schlauch
Tagchen!
Wie bring ich nen 16-Bit-Timer dazu, nur alle 20 Millisekunden eine ISR aufzurufen? Ohne eine Schleife zu schreiben, die hochzählt oder sowas. Ich will ein Software-PWM mit geringer Periodendauer schreiben, um damit Magnetventile zu steuern. Gleichzeitig sollen die 4 PWM-Werte per RS232 eingelesen werden, weswegen ich mir die aktive Zählschleife nicht erlauben kann. Also, gibts ne Möglichkeit, den Timer soweit zu verlangsamen? Wenn das RS232 nicht wäre könnte man ja evtl an der Taktfrequenz rumpfuschen, also bei 1MHz-Quarz 100 MHz angeben oder so.
Eine Art Postscaler wäre eine Lösung, aber gibts das beim AVR? (AtMega
-> MEIN PROJEKTBLOG <-
Weiß jetzt nicht ? Bei 16 MHZ (geraten) hast du mit Prescale 8 und preload 25536 genau alle 20 mS einen Schnackler ?
Irgendwo steh ich auf'm Schlauch
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Am einfachsten:
Hiermit passenden Timer-Code generieren lassen:
https://www.roboternetz.de/phpBB2/dl...le&file_id=169
Notfalls halt noch Zähler in die Timerroutine rein, wenn du nix passendes findest
Hmm, mal grob überschlagen:
16 Bit macht einen Zählbereich von 0 - 65535
also ohne Prescaler: 65536 Takte
mit einem Prescaler vom 1024: 67108864 Takte
Fazit: es ist problemlos möglich (selbst bei 16 MHz).
Grüße,
da Hanni.
Lesezeichen