Old 486 Board for ECU??

Mike from West Australia erazmus at wantree.com.au
Tue May 2 12:02:00 GMT 2000


At 08:00 PM 1/5/2000 -0800, you wrote:

>> 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.

Nop. Only if you have a bad OS, but then you wouldn't.

The Z80 approach I took ran 4 injectors in parallel but twice per
dist revolution. Back then we didn't have CAS.

Given the Z80-CTC we could have controlled PWM on all 4 injectors
with 1uS resolution separately. Wouldn't do it today with Z80 though,
far better stuff around.

>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?

Who says you have to use DRAM at all for instructions, use the cache
ram as direct ram and don't allow an L1 cache fill, execute from
L2 at a synchronous rate as external fast RAM, you have 256K of it
on some 486's. Plus the 1 Meg or so of flash.

>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.

Its not as hard as you think. You can do *lots* of PWM outputs for low
frequency things like injectors.

>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 don't need software loops - you need to make a comparison and you can
do this on an int cycle. Or if you want to be clever you can do a
compare gen timer int but oyu'd need to fiddle the tiemrs a bit but
thats another way to do it. :)

>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.

Yeah, the basic systems model does tally. There are a few smarts such
as interrupt swaps where you change the CAS int source for a timer int
source - that would only be needed at high rpm - but thats another story.

>
>"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.)

Now this is a good idea to ease software development, I like it.

Rgds

Mike

----------------------------------------------------------------------------
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