The car exhibits random starter kickback, mostly when cold but sometimes hot as well. Playing with the cranking advance doesn't help.
Initially the car was on the notorious 24+1 Nippondenso distributor. I advised to convert this to a 24-1 and not to use the 2nd trigger at all, since this is on the cam; a practive I've done on other cars with success. This one appears to be a little more troublesome.
On inspecting the composite log, it seems that during cranking, there are at least 3 places where due to high compression, the wheel pulses have a period that could be interpreted as a missing tooth place, and so spark the next cylinder event as there's sync.
After analyzing the data even more, it seemed that converting it to 24-2 would solve the problem, so we did, but to our surprise, the problem was not solved.
Looking at the code for the missing wheel decoder, I see this:
Code: Select all
if (!(synch & SYNC_SYNCED)) {
if (!(synch & SYNC_SEMI)) {
/* Here we will look for missing */
temp1 = tooth_diff_last + (tooth_diff_last >> 1);
Code: Select all
/* tooth after what we thought was missing, lets make sure this one is short
* on the first sync, we miss tooth #1, but that's ok as long as we catch it next time
* split this into 2 operations so compiler doesn't call subroutine
*/
temp1 = (tooth_diff_last >> 1); /* 1/2 of last value */
temp1 = temp1 >> 1; /* 1/4th of last value */
temp1 = tooth_diff_last - temp1; /* 3/4ths of last value */
Code: Select all
tooth_no = mid_last_tooth + ram4.No_Miss_Teeth + 1;
Obviously this cancels out the only benefit of a higher missing tooth count; can we do anything about this?