Hi!
Zu der Sache mit der Mathematik: Die Drehzahl ändert sich ja nicht wirklich schlagartig (zumindest aus µC Sicht). Ich würde also die Zeit zwischen zwei OT's bestimmen und dann einfach berechnen, wie lange nach dem OT-Signal die Zündung betätigt werden muss.
Beispiel: OT-Geber gibt ein Signal. Timer im µC wird angeworfen und beim nächsten OT angehalten. Diese Zeit ist quasi deine Drehzahl.
Nehmen wir mal 5.000 UPM an, das sind 60s / 5000upm = 12ms pro Umdrehung.
Wenn man also die Zeit bestimmt hat, dann kann man im Dreisatz vorgehen: 12ms / 360° (eine komplette Umdr. der Kurbelwelle) = 33,3µs / Grad. Wenn jetzt bei 20° vor OT gezündet werden soll, dann muss die Kurbelwelle 340° zurücklegen, nachdem das OT-Signal gekommen ist. In Zeit ausgedrückt: 340° * 33,3µs = 11.322µs nach dem Signal muss der Zündfunke springen.
Das mit dieser Methode die Info's erst bei der nächsten Umdrehung genutzt werden, ist in meinen Augen nicht weiter tragisch. Ob man jetzt bei 20,00° oder bei 20,05° zündet sollte eigentlich egal sein.

In neueren Auto's ist dieser Geber allerdings oft kein Schalter/Taster sondern ein Poti, welches eine Spannung ausgibt die proportional zur Kurbel-/Nockenwellen Position ist. Also erst erkundigen (wie Hubert schon geschrieben hat).

Wenn man einen neueren AVR nimmt (z.B. ATMega8, den man mit 20MHz betreiben kann, dann stellt die Aufgabe (bei sauberer Programmierung) keine riesig großen Ansprüche an den Controller. Das schöne bei der Verwendung eines µC: man kann einen elektronischen Drehzahlbegrenzer einbauen (einfach Zündung nach spät verstellen).

Zu der Sache mit der Hochspannung: Wenn wirklich die Hochspannung geschalten werden muss und nicht die Primärseite einer Zündspule (= 12V), dann könntest du evtl. einen IGBT verwenden. Aber da solltest du erstmal deine CDI aufmachen und schauen, was sich alles schönes darin verbirgt und ob man nicht ein paar Sachen wiederverwenden kann.

MfG
Basti