Du hast Recht.....die Auflösung ist wirklich extrem schlecht!
Hier ist dann eine andere Idee, sie kommt zwar einem software-PWM näher, als einem Hardware-PWM, aber so sollte es trotzdem funktionieren:
du stellst ein, dass dein TOP(0xFF) etwas über 2ms liegt.
Du stellst OCR so ein, wie du es brauchst. Nun hast du einen Timer, der deine 2ms am Anfang bedienen kann. Als overflow-interrupt machst du dann folgendes: du stellst deinen 8bit Timer aus!
Und in dem input-capture-interrupt bei deinem 16bit timer(der jede 20ms auftritt) machst du deinen 8bit-timer wieder an.

Es sieht dann folgendermaßen aus: der 16bit timer mach den 8bit-timer an, dieser durchläuft seine 2ms und geht aus.

Vergiss nicht darauf zu achten, dass OC2 nachdem der Timer aus ist auf GMD liegt, und nicht HIGH ist.

So erzielst du eine 10mal höhere Auflösung. Wenn dir das immernoch nicht genug ist, dann ist auch noch mehr möglich, allerdings geht das dann schon deutlicher auf die Leistung des Controllers.

Gruß, Yaro