Hallo!

allerdings ist der Einstellbereich nicht Linear, hat da jemand einen besseren Vorschlag oder einen Hinweis wo man nachschlagen kann.
Dann ist da noch die obere Maximale Frequenz von ca 25 Khz kann ich die höher bekommen ?
Beide Probleme haben mit dem Timer zu tun.

Beginnen wir bei der Problemlösung also bei der Berechung des Timers:
Die Zeit für einen Zählschritt beträgt
Quarzfrequenz / Prescale = 8 MHz / 64 = 125000 Hz - also alle 0.008 ms
Die Dauer, die der Timer insgesamt benötigt bis die 65536 Schritte voll gezählt sind beträgt: 0.008 ms x 65536 = 0.524288 Sekunden.
Nach 0.524288 Sekunden wird also deine Unterroutine aufgerufen. Um eine höhere Frequenz einzustellen, verkürzt du den Zählbereich deines Timers durch die Vorgabe eines größeren Startwertes als 0.

Allerdings erfolgt beim inkrementieren des Startwertes die Zeit, die für einen Zählvorgang benötigt wird, keine lineare Änderung. Ich habe das mal in diesem Diagramm veranschaulicht:
Bild hier  

Überleg dir jetzt mal einen Lösungsansatz für diese Problematik, ich hab grad keine Zeit mehr. Wenn du keinen findest, gehen ich weiter darauf ein.

Grüße
Thomas