Probleme mit Jitter bei Arduino UNO Boards

Wie gesagt Timer1 oder Timer2 verwenden. Der 8 Bit Timer2 reicht bei diesen kurzen Taktzeiten.

Wenn symmetrische Impulse reichen, kann man den CTC Modus verwenden. Dann kann man das Schalten des Pins per Hand im Compare Match Interrupt machen und gleichzeitig dort die Anzahl der Impulse zählen. Und nach x Impulsen den Timer wieder deaktivieren.

Für nicht-symmetrische Impulse gibt es Fast PWM.

Siehe hier:
http://maxembedded.com/2011/06/22/introduction-to-avr-timers/
http://maxembedded.com/2011/06/28/avr-timers-timer1/
http://maxembedded.com/2011/06/29/avr-timers-timer2/
http://maxembedded.com/2011/07/14/avr-timers-ctc-mode/
http://maxembedded.com/2011/08/07/avr-timers-pwm-mode-part-i/
http://maxembedded.com/2012/01/07/avr-timers-pwm-mode-part-ii/

Achtung: es gibt beim Atmega328 ein, zwei kleinere Unterschiede zu dem da. Vor allem hat jeder Timer ein eigenes Interrupt Masken Register TIMSKn, anstatt ein gemeinsames Register für alle Timer. Im Zweifelsfall ins Datenblatt schauen.
Aber der Rest ist glaube ich identisch.

Das schalten von Pin 13 selbst geht so in zwei Taktzyklen, statt den 3-4µs die digitalWrite() braucht:
PINB |= _BV(5);
Das toggelt bei jedem Aufruf den Pin.

Oder jeweils eine 0 oder 1 auf das Ausgangsregister PORTB schreiben:
PORTB |= _BV(5); //Pin auf 1 setzen
PORTB &= ~_BV(5); //Pin auf 0 setzen