Gast
#677035
Hallo zusammen,
ich wäre sehr daran interessiert, die folgenden Codefragmente etwas
performanter zu lösen. Die beiden Berechnungen brauchen in der Form wie
ich sie zur Zeit programmiert habe fast 500 us auf einem ATMega8 mit
3,686 MHz Quartz. Kann ich hier evtl. mit geschickten Shift-Operationen
die Sache etwas schneller berechnen? Mir fehlt auf diesem Gebiet
sicherlich einiges an Erfahrung.
...
#define COUNTER_INCS_PER_MILLISECOND_T1 461 // (3.686.400 / 8) / 1000
volatile unsigned long ulAktuelleUmlaufzeitG=0;
volatile unsigned long ulAktuelleDrehzahlG=0;
ISR(INT0_vect)
{
...
ulAktuelleDrehzahlG = 600000UL / (ulAktuelleUmlaufzeitG*10 /
COUNTER_INCS_PER_MILLISECOND_T1);
...
unsigned int uiTableIndex = ulAktuelleDrehzahlG / 50;
...
}
Gruß
Werner