Also wenn du jeden 2en Takt in den Timer-Interrupt von Timer0 springst, bleibt nicht mehr viel Zeit für andre Sahen. Anders gesagt so kann das nicht klappen.
Aber jetzt mal zum eigentlichen Prinzip.
Wenn ich das richtig sehe, hast du zwei Geber vorgesehen. Einen für Zylinder 1,und einen für Zylinder 2. Die sind nehme ich mal an, um 180Grad versetzt.
Ich würde es so versuchen
Wenn du jetzt noch mehr vor Zündung bei höher Drehzahl haben willst, mußt du die Verzögerung noch verkürzen. Um es optimal zumachen müßtest du auch die Drosselklappenstellung abfragen, und dem entsprechen die Zündung auch vor oder zurück stellen. Noch ein Klopfgeber und es währe perfekt.Do
Geber 1 = H
Timer1 auslesen.
Timer1 auf null setzen.
Verzögerung für zünden von Zylinder2 ausrechnen (je höher die Drehzahl desto kürzer die Verzögerungszeit)
Timer0 starten
Timer0 Vorgabe für die Zeit zum zünden von Zylinder 2
Das selbe mit Geber2 für Zylinder 1
Geber 2 = H
Timer1 auslesen.
Timer1 auf null setzen.
Verzögerung für zünden von Zylinder1 ausrechnen (je höher die Drehzahl desto kürzer die Verzögerungszeit)
Timer0 starten
Timer0 Vorgabe für die Zeit zum zünden von Zylinder 1
Loop
mfg
Guy
edit:
@Werner
Dein Vorschlag ist nicht schlecht. Nur du mußt mit zwei Gebern arbeiten. Weil du sonst nicht weist ob der erste oder zweite Zylinder zünden soll. Denn bei zwei Zylinder kannst die nicht gleichzeitig zünden weil bei OT vom ersten Zylinder der zweite schon Benzingemisch angesaugt hat.
Bei einem 4 Zylinder mit Zündfolge 1/3/4/2 kannst du 1 und 4 und 3und 2 gleichzeitig zünden.
Lesezeichen