mit dem Timer1 (16bit) lässt sich das sehr einfach lösen.
Nehmen wir einfach mal den RC-Takt 1MHz.
Du taktest den Timer mit diesen 1MHz, entspicht 1µs, bei 20ms
Zykluszeit also 20.000 Takte. Sinnvollste Betriebsart CTC, Top =OCR1A.
Du lädst also OCR1 mit 20.000, alle 20.000 Takte wird der OCR1A-Int
ausgelöst, gleichzeitig der Timer wieder auf 0 gestellt.
Deine gewünschte Impulszeit (in µs) schreibst du ins OCR1B-Register.
Das gesamte Programm besteht nun aus 3 Blöcken und insgesamt ca. 20
Zeilen:
1. Initialsierung und Endlosschleife, setzen evtl. neuer Werte für die
Impulslänge
2. Interrupt-Programm OCR1A:
-Ausgangspin setzen
3. Interupt-Programm OCR1B:
-gewünscht zurücksetzen
Also extrem trivial :-)