See EdisIgnition/FaQ for how to connect EDIS module to GenBoard
See firmware/edis.c to see how edis support is implemented in GenBoard
Here is an [online version]
\n
static inline void edis_saw(void) { uint16_t t, saw_length; edis_saw_high(); t = mult16_8(410, engine.ignadv)>>8; // 410 comes from: 25.6*16 define MAX_SAW_LEN (1536/4) define MIN_SAW_LEN (20/4) if((MAX_SAW_LEN - MIN_SAW_LEN) < t) saw_length = MIN_SAW_LEN; else saw_length = MAX_SAW_LEN - t; event_insert(etime.now + saw_length, EDIS_STOP_SAW); }
This shows the power of GenBoard:
- edis_saw_high(); is a simple port-action (it can be specified compiletime if SAW is wired inverted or not, so it's 3 lines in fact)
- The sawlength calculation is basicly one line, a 16*8 multiplication (this had been split to be calculated from userspace - not interrupt - and sawlength stored in the dwell variable. Also, multispark capability was added (configurable).
- the if condition takes care if the user configures too high ignitionadvance (edis max is 57 (??) degree, while msavr ignition table defaults to 1/4 degree ignition advance from 0..64 degrees.)
- the event_insert() uses the EventQueue to schedule an event, which will call edis_saw_low() a specified time (saw_length * 4 usec) later
It's called from the interrupt, which happens at the falling edge of PIP.
It's that simple.
Kenny Bauman kennybauman at yahoo.com writes:
The ford EDIS is a standalone microprosessor based ignition. It handles all timing calculations and trigger wheel processing internally. MS AVR only has to deal with a SAW and PIP signal to make the EDIS setup work.
What happens is the EDIS sends out a PIP signal that will tell MS AVR it needs a SAW in return. The length of this SAW signal tells EDIS what timing is desired.
If EDIS looses the SAW signal it defaults to 10 deg timing as a base value. Nice as a built in limp home mode.
Makes a nice setup as it is proven and hardened for the underhood environment.
Regarding the 36-1 trigger wheel. This has to be a Crank trigger not a cam trigger. You can use a cam trigger, but it needs to be 36-1 and 36-1 on the same wheel for a total of 72-2 teeth. The missing teeth would be 180 degs apart. This is for EDIS.
So what I "think" is needed is a interrupt (or event que) every time EDIS sends the PIP signal. Go to the lookup table get the timing value stored, do the math and then send a timed pulse back to EDIS as the SAW signal. That's it. EDIS takes care of all the hard stuff.
SAW (microseconds) = 1536 - (25.6 * Commanded_degrees)
You can go to: http://www.bgsoflex.com/mjl/mjl_edis_summary.html
to see more about the relationship of PIP and SAW.
Here are some AC Delco part numbers for the EDIS-4 module and the coil. The US model vehicle is: '93 Escort LX w/1.9L 116CID L4 MFI (J) engine.
EDIS Module - AC Delco F1945
Coil AC - Delco F510
NAPA ONLINE lists:
Echlin Ignition Ignition Control Module ECHTP500
I haven't found a part number for the VR pickup and then there is the toothed wheel.
-- Some more trigger wheel info-
James Murray at james@nscc.info has part numbers and excellent pictures here.
And this may be of interest to some test bench work or engine retrofit.
Jay James
Another good intro:
http://www.dainst.com/info/edis/edis.html
Note, that the postion of VRS pickup sensor in relation to TDC of cylinder 1 is not the same for all EDIS modules:
Cylinders Degrees BTDC
EDIS4 90
EDIS6 60
EDIS8 50
[[Manual: Detailed.Output.EDIS.Install]]
Jim Hearne
[[Manual: Detailed.Output.EDIS.Install]]
Dave Haynes
[[Manual: Detailed.Output.EDIS.Install]]
See also: IgnitionPage IonSense