In C wird das wahrscheinlich auch noch gehen, falls Du Fliesskommazahlen vermeidest. Da die AVRs von Haus aus nur Operationen mit 8Bit Integers unterstützen, ist alles, was Fliesskommazahlen beinhaltet (zB dividieren) sehr speicher- und rechenintensiv.

Bei deinem Problem kann ich es mir aber vorstellen, dass Du mit einem 16bit (U)Integervariable für Deine Berechnungen auskommen kannst. Man muss sich nur u.U über die Reihenfolge der Operationen nachdenken, damit man immer im Wertebereich der 16bit bleibt.

Was Du vielleicht in Betracht ziehen könntest, ist die Kommunikation zwischen AVR und PC per serielle Schnittstelle. Dabei könnte der Rechner die "komplizierteren" Rechnungen übernehmen (zB die Errechnung der Schaltschwellen), und diese dann an den AVR übermitteln.

Also: Taktzählen über Gameport, Kalibrierung in bestimmten Intervallen über serielle Schnittstelle.