hallo,
ich habe ein problem mit einer berechnung bei meinem atmega88. es geht
um eine berechnung einer drehzahl eines motors.
die vorabberechnung sieht so aus:
1 | // Wert muss entsprechend PWM_Init() angepasst werden
|
2 | #define PRESCALER_TIMER0 1
|
3 |
|
4 | // PWM Frequenz berechnen, hier 36141 Hz
|
5 | #define F_PWM F_CPU / (PRESCALER_TIMER0 * 510)
|
6 |
|
7 | // Delta t für Drehzahlbestimmt berechnen, hier: 0.0000277 s = 27,7 µs
|
8 | #define DELTA_T 1 / F_PWM
|
in der main schleife wird dann so gerechnet:
1 | drehzahl = 1 / (delta_t_counter * DELTA_T);
|
das problem ist nun dass ich keinen gescheiten wert für drehzahl
erhalte. den artikel mit der Festkommaarithmetik kenne ich und habs
damit auch versucht, nur funktionierte es irgendwie nicht.
wenn ich DELTA_T mit dem zu berechnenden wert direkt deklariere:
1 | #define DELTA_T 0.0000277
|
dann funktioniert die berechnung. allerdings macht der compiler dann, so
glaub ich, ein float daraus und damit bekomme ich dann einen fast vollen
programmspeicher von 93% und einen datenspeicher von 62%. vorher 50%
programm- und 34% datenspeicher.
ich würde das gerne irgendwie umgehen, denn eine auslastung von 93% is
mir zuviel :-(
habt ihr da einen vorschlag?