Die Rechnung mit Fließkomma sollte man sich in der ISR verkneifen, das braucht ggf zu lange um damit in 256 Zyklen fertig zu werden. Es macht auch wenig Sinn den OCR0 wert immer wieder neu zu berechnen. Ein Puffer für den PWM Wert gibt es sowieso schon in Hardware. Man darf also zu jeder Zeit OCR0 verändern - aktiv wird der Wert erst mit dem nächsten Zyklus.

Formal sollte zumindest die Variable dutyCycle volatile sein - aber der Code kann sowieso entfallen.