M. H. schrieb:
> Eine Messung mit nem oscar hat ergeben, dass das erzeugte PWM Signal um
> ca. +/- 250µs toggelt.
Passiert das nur ab und zu mal ganz kurz oder dauernd?
Was mir auffallen würde:
1 | buffer1_start = (servo1_overflow_count * 100)+TCNT0; // Berechnung des Startzählers
|
da hast du nicht bedacht, was passiert, wenn dein Timer überläuft,
während du gerade in einer der Pin-ISRs bist. Dann ist dein
overflow_count nämlich noch nicht inkrementiert, aber TCNT0 hat wieder
bei 0 angefangen. Und wenn du dann noch deinen overflow_count auf 0
setzt, nachdem ein noch nicht behandelter Overflow aufgetreten ist, wird
dieser danach sofort von der Timer-ISR inkrementiert, und du rechnest
dann mit einem Overflow zuviel weiter.