Wenn also dein Faktor als double vorliegt, etwa dFaktor, dann
ist
Code:
faktor = (uint16_t) (65536.0 / dFaktor)
, wobei für dFaktor gelten muss
0 < dFaktor < 0.99998

Ich weiß ja nicht, wie du an den Faktor kommst, aber double-Arithmetik ist recht klotzig. Wahrscheinlich geht das auch per schlanker und schneller fix-Arithmetik.

Ist zwar nicht so schön hinzuschreiben, aber es lohnt die paar Zeilen Code.