Den genauen Fehler hab ich nicht gesehen, aber der Code ist ziemlich umständlich und unpraktisch. Wenn man software PWM schon im Interrupt macht, dann sollte man es auch ganz im Interrupt machen. Wozu noch die Extra Interrupts nur um noch einmal eine Teilung durch 10 hinzubekommen - den Interrupt braucht man nur, wenn sich wirklich etwas an PWM_Steps ändert. So wie es aussieht kommt das ja auch etwas hin, denn es braucht schon 256 Schritte für das 8 Bit PWM Signal entsprechend kommen da rund 1 kHz / 255 oder ca. 4 Hz raus.
Um ein 1 kHz PWM Signal mit 8 Bit Auflösung zu bekommen, braucht man schon 255 kHz als Interruptfrequenz, wenn man es mit Hochzählen per Hand machen will.
Lesezeichen