unsigned long Drehzahl_in_teile, Drehzahl_in_rpm; char Drehzahl_in_rpm_Temp[5]; unsigned char freigabe_drehzahl; void Drehzahl_einlesen (void) { if (bit_is_clear(PIND, 3) && freigabe_drehzahl == 0) { freigabe_drehzahl = 1; Drehzahl_in_teile = 0; } while ((bit_is_set(PIND, 3) && freigabe_drehzahl == 1)) { Drehzahl_in_teile++; if (Drehzahl_in_teile > 65000) { freigabe_drehzahl = 2; } } if (bit_is_clear(PIND, 3) && freigabe_drehzahl == 2) { freigabe_drehzahl = 0; } if (Drehzahl_in_teile > 0) { Drehzahl_in_rpm = 7000000 / Drehzahl_in_teile; } if (Drehzahl_in_rpm > 4500) Drehzahl_in_rpm = 4500; if (Drehzahl_in_rpm < 500) Drehzahl_in_rpm = 0; Drehzahl_in_rpm = Drehzahl_in_rpm / 10; Drehzahl_in_rpm = Drehzahl_in_rpm * 10; itoa (Drehzahl_in_rpm, Drehzahl_in_rpm_Temp, 10); Drehzahl_in_teile = 0; }