Das könnte damit zusammenhängen, dass der Präprozessor hier anscheinend mit int rechnet.
1/(F_CPU/PRESCALE) ergibt dann 0,000008, was als int auf Null abgeschnitten wird. Dasselbe passiert nochmal bei (PERIOD/1000) = 0,02, was auch zu Null wird. Letztendlich wird also 0 durch 0 geteilt...
Edit: ist 1250 das, was deiner Meinung nach rauskommen sollte? Das passiert bei
#define ICR (int) (((PERIOD/(float)1000)/(1/(F_CPU/(float)PRESCALE)))/2)
PS: so ein kurzes Stück Code sollte man besser in [code ][/code ]-Tags packen statt in den Anhang. Dann sieht jeder sofort, was drinsteht.
PPS: und so wird es auch noch einigermaßen lesbar:
Code:
#define ICR (int) ( \
( \
(PERIOD/(float)1000) \
/ \
( \
1 \
/ \
(F_CPU/(float)PRESCALE) \
) \
) \
/ \
2 \
)
Lesezeichen