Using factory 60-2 crankshaft mounted wheel and block mounted VR sensor. VW 2.0 liter (ABA code) block.
Pin 1 on sensor is VR+
Pin 2 on sensor is VR-
Pin 3 on sensor is shield
TDC after trigger: 54 degrees
Number of teeth on wheel: 58
First trigger tooth: 4
Next trigger tooth: 30
Angular width of tooth: 6
Minimum crank period: 768 us
Reference tooth config:
Distributor was removed. Hall sensor inside went with distributor. In the future I may reinstall a secondary trigger.
36-1 crank wheel and crank trigger setup on spare (and dirty) engine block:
[http://proton.shadowflux.com/vems/sens_block.jpg]  [http://proton.shadowflux.com/vems/sens_gap.jpg]
Here you can see the TDC mark in the pulley aligned with the missing tooth. You are looking at the back of the pulley, so from this angle it would rotate counter-clockwise.
The TDC is 15 degrees after the center of the missing tooth.
..so we set up the sum of trigger_tooth + ign_tdcdelay for 195 degrees.
Offsetting 180 degrees is absolutely reasonable because max ignition advance is limited by ign_tdcdelay. 15 degrees of max ignition advance is not enough. Actually, ign_tdcdelay should be at least 30 crank degrees larger than ignition advance at cranking. Common ign_tdcdelay values are 55..65 degrees.
igntdc_delay=0x1e (30 decimal, that is 15 crank degrees) is very bad, see above. trigger_tooth=00 and igntdc_delay=0x1e, at n=0, the coil would fire at TDC, but you might not be happy with max advance of 15 degrees, and timing from previous tooth would be active even for very low RPMs (where RPM variations are significant => BAD for dwell precision at low RPM).
- let's assume a normal tooth=10 crank degrees (=360/36 if it's 36-1)
- trigger_tooth=0d (decimal 13), that is 13*10=130 crank degrees because one tooth is 10 degrees.
trigger_tooth=00 means the tooth after the missing tooth will act as the trigger. Please correct it wherever you see it wrong.
- ign_tdcdelay=82 (decimal 130, which is 65 degrees)
Ignition h sequence questions:
In the manual there are two tables describing what should be used in the h array, but I don't see how they could possibly be correct.
h is different than h, see GenBoard/Manual/DigitalOut/Table. Basically, h allows to fire 0..8 injector channels at the same time (any values are valid).
h is simpler, only allows exactly one at a time and valid values are
- <h value> <mdh to activate> <mdh to inactivate>
- 00 mdh82 / mdh02
- 01 mdh92 / mdh12
- 02 mdha2 / mdh22
- 03 mdhb2 / mdh32
- 04 mdhc2 / mdh42
- 05 mdhd2 / mdh52
- 06 mdhe2 / mdh62
- 07 mdhf2 / mdh72
The same values in h that are used for GenBoard/Manual/DigitalOut would actually make more sense (72 instead of 07) but it's currently not implemented that way.