Forum: Mikrocontroller und Digitale Elektronik #define und Runden?


von Sepp (Gast)


Lesenswert?

Hallo,
ich möchte meinen Interrupt der von einem Timer ausgelöst wird einfach 
flexibel gestalten und ihn über einen Makronamen einbinden.
z.B.

#define TIMEBASE 2.5  // in ms

die für die Zeitbasis nötigen Ticks errechne ich dann extra:

#define TICKS (255-(TIMEBASE*F_CPU)/8000)

dann hab ich die Anzahl Ticks die ich dann auch bei der 
Timerinitialisierung verwenden kann.... zumindest theoretisch.... denn 
da kommt halt dann je nach Eingabe auch was unrundes 104.321 raus.
Wie kann ich das runden? Typecast geht doch hier nicht. Oder wird der 
Wert eh wie int gesehen?

Überhaupt.... geht das doch bestimmt besser bzw. ohne das Zusatzmakro 
Ticks, oder?

Danke schon mal für ne Antwort

von Stefan P. (form)


Lesenswert?

#defines sind nur "Textersetzungen", d.h. da gibts auch nix anderes zu 
beachten als wenn Du das direkt in Deinem Code so einsetzt.

Probier mal:
#define TICKS (uint8_t)(255-2.5*F_CPU/8000-0.5)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.