ich fass es mal kurz zusammen, nen link hab ich grad nicht, du nimmst en timer, stellst ihn dir so ein das er nützlich wird (10tel ms takt ein überlauf z.B.) aktivierst den timer-overflow interrupt, und schreibst in deiner interrupt routine mit hilfe einer zählvariable und einer sollwert variable in das portregister und schaltest je nach wunsch den pin zur richtigen zeit an und aus

EDIT: Beispiel
10tel ms takt

Code:
ISR {
count_vaiable inkrementieren;
wenn (pin high && count_variable == sollvar+10) pin low; count_variable = 0;
//wenn pin high dann 1-2mS high halten und dann wieder low schalten taktlänge ist 1.5ms +- 0.5ms
wenn (pin low && count_variable > rund(20ms*10)) pin high; Count_variable = 0;
//wenn pin auf low geht ne pause von 20-50ms einlegen damit der servo sich einstellen kann sonst ruckelt er