v2.883 release
Posted: Wed Nov 07, 2007 5:28 pm
This release is primarily of interest to people using dual spark mode with a toothed wheel. The main upgrade was that wasted/COP Dual Spark ignition was changed into a tooth(angle) based system to improve accuracy of spark timimng. The basic logic is that the spark tooth is calculated from the advance angle as a tooth + fractional part of a tooth. Then, at each tooth after tach the dwell is converted to a tooth by dividing dwell time by the last tooth delta_t. The code then checks if it has reached a buffer tooth that is a few teeth before the dwell tooth - to allow for missed teeth. If so then it sets the output timer for the time remaining to dwell and this is automatically taken care of by the processor timer. It then continues to wait until it gets close to the spark tooth, sets the timer to the time remaining to spark, and the timer auomatically fires the spark. The time remaining to dwell or spark is based on the (tooth + fraction of tooth remaining) x last tooth delta_t. This produces a highly accurate spark and dwell timing that barely moves half the width of a line on the scope despite way more than normal acceleration on the wheel signal. This is the mode that is being used in the sequencer code, so it has not really been delaying that - which is almost ready for bench testing - probably next week.
In addition, I updated the logic for the alternating count during cranking so it will keep the two injector banks in synch when the engine comes out of cranking. What I mean by this is that you start with bank1 firing on the missing tooth, then alternating banks on each subsequent tach pulse - except the old cranking logic messed this up by firing both banks simultaneously. Then when it came out of cranking it was random as to which would be the first bank to fire. The new code keeps track of the banks during cranking, but still fires simultaneously. This is not so important now, because the injector timing isn't really sequential. But again it will be for the sequencer.
Finally, the tach output used in the previous codes was really just the injector led, which might or might not represent tach, depending on no squirts and other settings. It should now represent true tach. Again this will be critical for the sequencer, which will be clocked by these tach pulses.
There are no changes to inputs or ini file, so if you are running 2.881 or 2.882 this should work right out of the box. If people test this code it will expedite testing for the sequencer. I don't expect to see any major changes in performance except possibly from improved timing during acceleration/ deceleration.
In addition, I updated the logic for the alternating count during cranking so it will keep the two injector banks in synch when the engine comes out of cranking. What I mean by this is that you start with bank1 firing on the missing tooth, then alternating banks on each subsequent tach pulse - except the old cranking logic messed this up by firing both banks simultaneously. Then when it came out of cranking it was random as to which would be the first bank to fire. The new code keeps track of the banks during cranking, but still fires simultaneously. This is not so important now, because the injector timing isn't really sequential. But again it will be for the sequencer.
Finally, the tach output used in the previous codes was really just the injector led, which might or might not represent tach, depending on no squirts and other settings. It should now represent true tach. Again this will be critical for the sequencer, which will be clocked by these tach pulses.
There are no changes to inputs or ini file, so if you are running 2.881 or 2.882 this should work right out of the box. If people test this code it will expedite testing for the sequencer. I don't expect to see any major changes in performance except possibly from improved timing during acceleration/ deceleration.