Programmiergrundlagen für Elektronische Zündung
Wie berechne ich den aktuellen Zündzeitpunkt für eine selbstgebaute Elektronische Zündung mit Mikrocontroller?
Wenn man sich auf einen festen Interpolationsabstand festlegt, dann
kann man das in recht wenigen Takten erledigen.
Grundgerüst:
1. Drehzahl bestimmen
2. Tabellenwert kleiner der aktuellen Drehzahl lesen
3. Tabellenwert größer der aktuellen Drehzahl lesen
4. Differenz bestimmen
5. solange Tabellen_drehzahl + Interpolationsschritt < Drehzahl
Korrekturwert = Korrekturwert + Differenz
Tabellen_drehzahl = Tabellen_drehzahl + Interpolationsschritt
6. Korrekturwert = Korrekturwert / Interpolationsfaktor
7. Interpolierter Tabellenwert = Tabellenwert_klein + Korrekturwert
Wenn man als Interpolationsfaktor eine 2er Potenz wählt, sprich das
Teilen durch eine Shift-Operation ersetzen kann, bleibt der
Rechenaufwand recht niedrig.