Wie gesagt, probiers mal mit Software-PWM.
Nimmst Timer1 mit Prescaler 8 dafür, der kann bis zu 65535 hochzählen und bei 16MHz Taktfrequenz bedeutet das, dass er bis 32,277ms in 0,5µs-Schritten hochzählen kann. reicht also für die geforderten 20ms pro Periode.
Dann den Interrupt so programmieren, dass er deinen Servo-Pin für die Impulszeit auf High setzt, beispielsweise für ein 1,5ms-Signal stellst du den Timer auf 3000, und für den Rest der 20ms auf Low, also 40000-3000=37000.
Der µC-Takt wird also durch den Prescaler durch 8 geteilt, sodass man eine Frequenz von 2MHz hat, daher die 0,5µs-Schritte, der Pin wird für 3000*0,5µs=1,5ms High gesetzt und für 37000*0,5µs=18,5ms auf Low.
So lässt sich der Stellbereich von 1ms bis 2ms in 2000 Schritte unterteilen. Dürfte genauer sein, als der Servo auflösen kann