Eine ISR nur zum setzen einen Flags ist überflüssig - das ist schon mal richtig. Mit der Synchronisation der Hauptschleife hat man worst case schon mehr als 2 ms Zeit - man hat in Prinzip bis zu 2 ms Zeit, um die man mit der Ausführung auch mal hinterher hinken kann. Das darf nicht aber natürlich nicht aufsummieren, und die Regelung kommt dann ggf. auch eine Periode zu spät. Bei der ISR Lösung mit verschachtelten Interrupts wird es bereits nach einmal mehr als 2 ms kritisch.
Den ganzen Code der in der Hauptschleife rund 1ms braucht allerdings in eine ISR zu schieben ist keine so gute Idee, vor allem wenn man nicht erlaubt den Interrupt noch unterbrachen zu lassen. Die Antwortzeit für andere Interrupts leidet dann doch schon erheblich und macht die fast unbrauchbar.
Wenn es geht würde ich auch eher die Regelung und alles das Synchron mit dem PWM Signal laufen muss in ISRs legen. Normal sollte das auch nicht so lange dauern, wenn man es effektiv programmiert. Die Hauptschleife muss dann ggf. nicht mehr auf das PWM Signal warten und kann langsame Dinge machen. Eine Display-ausgabe wird man im Flug eher nicht brauchen.
Wenn es zeitkritisch wird, hätte man ggf. noch die Möglichkeit von Bascom auf GCC umzusteigen - das wird oft einiges schneller.
Lesezeichen