Old 486 Board for ECU??

Ludis Langens ludis at cruzers.com
Tue May 2 03:02:47 GMT 2000


Mike from West Australia wrote:
> 
> > The issue is: can you generate an
> > output signal with one microsecond accuracy relative to an input signal?
> > How about two outputs that might change at once?  Three?
> 
> You don't need to generate an output within 1usec of getting an input.

Actually, you might.  But that isn't exactly what I was getting at.

You need to toggle an output signal (generate a spark, fire an injector,
shut off an injector) at a controlled delay from an input signal.  The
delay doesn't have to be variable down to the microsecond (i.e. 400,
401, 402, ... us).  It does need to be variable to within 10 or 20
microseconds (i.e. 400, 410, 420, ... us).  Further, that delay must be
consistent within a microsecond or two.  It can't jump around: 397 us
one time, 405 the next, and so on.

> The Z80 NMI came from the ignition contact points (through fitlering)
> which fired an injector. In the background the CPU would constantly
> acquire AFM and engine temp readings and generate a number ready for
> the next interrupt...

It sounds like you controlled only one output.  Further, you used a
processor and interrupt mode that gave you a well controlled interrupt
latency.  The interrupt latency of the 486 can be all over the place. 
What if it is executing a divide instruction, or a floating point
operation?  What if the cache has to be loaded one time, but not the next?

One output at a time can be controlled precisely by spinning in a tight
software loop with interrupts disabled.  The loop could be polling a
hardware timer, implementing a software delay, waiting for the input
signal, or whatever.  What happens when you need to control two or three
outputs, all of which might have to toggle at the same time?  Actually,
it would be even worse if they have to toggle 10 microseconds apart. 
You can't take an interrupt for each one.  The only answer I see is to
have software loops for every possible combination of timing events. 
You'd spin in the correct loop whenever an event is expected soon. 
Higher level processing would have to be done in the inbetween times. 
_If_ you can find any inbetween times, then I'm sure the '486 would be
fast enough to do the high level processing needed.


"Peter D. Hipson" wrote:
> 
> Remember, a
> typical CPU has the power of one of the original IBM PC (4.77 MHz), and a
> newer Pentium is about a hundred times faster! As well, DOS doesn't have
> the problem with interrupts as you can 'hog' the whole CPU. BTW, I doubt
> that an ECM could do one microsecond timing... That's a millionth of a
> second, very fast. Not much happens in an engine in that kind of time
> period... <g>

I assume you meant "a typical ECM has the power...".

You're correct, the CPU in a typical ECM can't do one microsecond
timing.  That's why they aren't used to do such timing.  Ford supposedly
has an array of capture/compare style timers.  This lets the CPU
casually update these registers while the hardware takes care of precise
output timing.  GM has a seperate timing processor that can handle
periodic timing events all on its own.  You could drive across Kansas or
the Nullarbor Plain with the regular CPU having done nothing.  This GM
chip ought to be able to control the ignition and fuel outputs to within
a microsecond or two of the programmed time.  (The CPU specifies these
events with 16 microsecond resolution.)

-- 
Ludis Langens                               ludis (at) cruzers (dot) com
Mac, Fiero, & engine controller goodies:  http://www.cruzers.com/~ludis/

----------------------------------------------------------------------------
To unsubscribe from diy_efi, send "unsubscribe diy_efi" (without the quotes)
in the body of a message (not the subject) to majordomo at lists.diy-efi.org




More information about the Diy_efi mailing list