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 \ )





Zitieren

Lesezeichen