Issue on single dizzy odd fire engines (patch included)
Posted: Tue Feb 07, 2012 3:49 pm
We discovered an issue with single distributor odd fire engines. Specifically, this is a 90 degree odd fire V6. The code doesn't shorten dwell correctly at high rpms, causing dwell for two separate ignition events to overlap. This obviously causes an entire bank to drop out, in addition to overdwelling the coil. I attached some images to illustrate the problem. The following are the ignition settings:
Scoping the ignition output at 4500 rpms shows the spark output getting pulled down correctly and working just fine (potentially too short spark duration here, though):
Scoping at 5300 rpms shows the overdwell and complete lack of spark for the one bank:
The following is a fix for this issue. The code for odd fire distributor mode gets this right, but the code is valid for any odd fire engine with a single coil:
Mind you, running a single distributor on a V6 90 degree odd fire engine is basically the same as on a even fire V8. The dwell time at 6500 RPM is < 2.3ms, so I'm not sure it's a great idea. However, a friend ran into this issue, so I put together this fix for him. The code hasn't been tested on the car yet, only scoped the outputs.
- Karl
Scoping the ignition output at 4500 rpms shows the spark output getting pulled down correctly and working just fine (potentially too short spark duration here, though):
Scoping at 5300 rpms shows the overdwell and complete lack of spark for the one bank:
The following is a fix for this issue. The code for odd fire distributor mode gets this right, but the code is valid for any odd fire engine with a single coil:
Code: Select all
diff -uri orig/ms2extra_3.2.1_beta/ms2extra/ms2_extra_main.c ms2extra_3.2.1_beta/ms2extra/ms2_extra_main.c
--- orig/ms2extra_3.2.1_beta/ms2extra/ms2_extra_main.c 2011-12-08 16:04:05.000000000 +0100
+++ ms2extra_3.2.1_beta/ms2extra/ms2_extra_main.c 2012-02-07 19:53:53.756230800 +0100
@@ -3276,7 +3276,7 @@
/* rotary or DLI force 1 */
max_dwl_time = dtpred_local;
} else if (flash4.ICIgnOption & 0x8) {
- if (spkmode == 2) {
+ if (num_spk == 1) {
// in odd fire set max dwell for shorter period
if (dtpred_last_local < dtpred_local) {
max_dwl_time = dtpred_last_local;
- Karl