Timer Top über #define berechnen

OP #4618671
Lesenswert?
• ▲
▼
Sinn der Sache ist es den Timer Top nach der gewünschten Periodendauer 
berechnen zu lassen.
1
#define F_CPU  16000000
2
#define TIMER_PRESCALER  8
3
#define SIGNAL_PERIOD  0.0025
4

5
#define TIMER_TOP  (SIGNAL_PERIOD/(TIMER_PRESCALER/F_CPU))

Da ich mir nicht ganz im Klaren bin wie der Präprozessor diese Formel 
ausrechnet, und 8/16000000 für einen float etwas zu klein sein könnte, 
kam ich zu folgender Alternative...
1
#define F_CPU  16000000
2
#define TIMER_PRESCALER  8
3
#define SIGNAL_PERIOD  2.5
4

5
#define TIMER_TOP  (SIGNAL_PERIOD/((TIMER_PRESCALER*1000)/F_CPU))

... die auch nicht funktioniert.

Der Compiler meldet sich lediglich mit einer "Division by Zero" Warnung 
und der Timer läuft mit einer Periodendauer von 32.77 ms, was einem 
Timer Top Wert von  65,536 entsprechen sollte.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren