Hi,
My name is Oliver and I am new around here. Just ordered a pair of ARMmites for
an
engine management project I am about to start.
I have a few questions on how to get started:
My background has been C for a very long time and it would be my choice for the
dev
platform.
The project will require to track and modify multiple engine signals:
4 Injectors, 4 Ignition coils (both are simple on/off signals) as well as 1-2
pulse modulated
signals and a few analog signals.
The timing critical part are the injector and ignition signals. At a maximum
speed of 10000
rpm, 1 degree of a revolution only lasts for about 16 microseconds. I need to be
able to
measure the 4+4 signals at an accuracy better than that (probably 2 x more
frequent or
about 8 microseconds). The other signals and analog inputs can be measured every
5ms
or even less frequent.
Based on the measurements I need to drive 4+4 outputs (4 Injectors and 4
Ignition coils)
with variable degrees of modified pulse width and advances/delays based on
lookup tables
in memory.
On a platform like the ARMmite - what are options to implement this? Build an
interrupt
controlled architecture or a continuous loop design that probes all inputs and
stores the
time of transitions in variables?
Since many of the Inputs are digital, can groups of them (e.g. 8) be read at
once, or does it
have to be serially?
Any other gotchas?
Your help is very much appreciated!
Thx!
Oliver
Engine controls
-
YahooArchive
- Posts: 1462
- Joined: Fri Oct 19, 2012 5:11 am
Re: Engine controls
I'm working on a similar project. In fact I am well on my way.
The general structure of my program is a background While Loop to take care of
all the housekeeping, a Timer/Counter Interrupt to keep track of time and
synchrozation, and an Engine driven Interrupt to handle the time critical I/O
such as spark and injectors. The Engine driven Interrupt is the highest priority
and the shortest process.
Do as much as possible in the background loop.
The Armite is almost an ideal host for this type of application, but the Digital
I/O is a Bit operation. Maybe someone here can tell you how to setup the I/O to
be Nibble or Byte.
I fire my 8 Injectors sequentially using the HWPWM function, but my spark is
serial since my motor uses a distributor, With a 4 cylinder motor, you could use
HWPWM to fire 4 Injectors and 4 coils sequentially.
I use two Narrow Band O2 sensors, but they are read individually in the
background loop with A/D converters. I also measure Air & Water Temperature,
Throttle Position and other sensors with A/Ds or Digital I/O.
--- On Thu, 1/22/09, oratzes <oliver@ratzesberger.com> wrote:
From: oratzes <oliver@ratzesberger.com>
Subject: [ARMexpress] Looking for general design input
To: ARMexpress@yahoogroups.com
Date: Thursday, January 22, 2009, 1:20 AM
Hi,
My name is Oliver and I am new around here. Just ordered a pair of ARMmites for
an
engine management project I am about to start.
I have a few questions on how to get started:
My background has been C for a very long time and it would be my choice for the
dev
platform.
The project will require to track and modify multiple engine signals:
4 Injectors, 4 Ignition coils (both are simple on/off signals) as well as 1-2
pulse modulated
signals and a few analog signals.
The timing critical part are the injector and ignition signals. At a maximum
speed of 10000
rpm, 1 degree of a revolution only lasts for about 16 microseconds. I need to
be able to
measure the 4+4 signals at an accuracy better than that (probably 2 x more
frequent or
about 8 microseconds). The other signals and analog inputs can be measured
every 5ms
or even less frequent.
Based on the measurements I need to drive 4+4 outputs (4 Injectors and 4
Ignition coils)
with variable degrees of modified pulse width and advances/delays based on
lookup tables
in memory.
On a platform like the ARMmite - what are options to implement this? Build an
interrupt
controlled architecture or a continuous loop design that probes all inputs and
stores the
time of transitions in variables?
Since many of the Inputs are digital, can groups of them (e.g. 8) be read at
once, or does it
have to be serially?
Any other gotchas?
Your help is very much appreciated!
Thx!
Oliver
------------------------------------
Yahoo! Groups Links
[Non-text portions of this message have been removed]
The general structure of my program is a background While Loop to take care of
all the housekeeping, a Timer/Counter Interrupt to keep track of time and
synchrozation, and an Engine driven Interrupt to handle the time critical I/O
such as spark and injectors. The Engine driven Interrupt is the highest priority
and the shortest process.
Do as much as possible in the background loop.
The Armite is almost an ideal host for this type of application, but the Digital
I/O is a Bit operation. Maybe someone here can tell you how to setup the I/O to
be Nibble or Byte.
I fire my 8 Injectors sequentially using the HWPWM function, but my spark is
serial since my motor uses a distributor, With a 4 cylinder motor, you could use
HWPWM to fire 4 Injectors and 4 coils sequentially.
I use two Narrow Band O2 sensors, but they are read individually in the
background loop with A/D converters. I also measure Air & Water Temperature,
Throttle Position and other sensors with A/Ds or Digital I/O.
--- On Thu, 1/22/09, oratzes <oliver@ratzesberger.com> wrote:
From: oratzes <oliver@ratzesberger.com>
Subject: [ARMexpress] Looking for general design input
To: ARMexpress@yahoogroups.com
Date: Thursday, January 22, 2009, 1:20 AM
Hi,
My name is Oliver and I am new around here. Just ordered a pair of ARMmites for
an
engine management project I am about to start.
I have a few questions on how to get started:
My background has been C for a very long time and it would be my choice for the
dev
platform.
The project will require to track and modify multiple engine signals:
4 Injectors, 4 Ignition coils (both are simple on/off signals) as well as 1-2
pulse modulated
signals and a few analog signals.
The timing critical part are the injector and ignition signals. At a maximum
speed of 10000
rpm, 1 degree of a revolution only lasts for about 16 microseconds. I need to
be able to
measure the 4+4 signals at an accuracy better than that (probably 2 x more
frequent or
about 8 microseconds). The other signals and analog inputs can be measured
every 5ms
or even less frequent.
Based on the measurements I need to drive 4+4 outputs (4 Injectors and 4
Ignition coils)
with variable degrees of modified pulse width and advances/delays based on
lookup tables
in memory.
On a platform like the ARMmite - what are options to implement this? Build an
interrupt
controlled architecture or a continuous loop design that probes all inputs and
stores the
time of transitions in variables?
Since many of the Inputs are digital, can groups of them (e.g. 8) be read at
once, or does it
have to be serially?
Any other gotchas?
Your help is very much appreciated!
Thx!
Oliver
------------------------------------
Yahoo! Groups Links
[Non-text portions of this message have been removed]
-
YahooArchive
- Posts: 1462
- Joined: Fri Oct 19, 2012 5:11 am
Re: Engine controls
Very much appriciate your input. Have been thinking about a similar
design. Sounds like you are doing a meagsquirt like project. Have
been following that for a few years now.
My project is slightly different and it is targetd at motrocycle
engines. My logic will only supplement and modify the main ECUs
signals. I need to be able to modify the fuel/ignition map and
various sensor inputs for race-setup purposes.
I am planning to make this openly available as an open source project.
As for the interrupt setup: Any special tips you could share on how
you set them up? Any HW additions/changes for the timer interupt?
What's the highest resolution you have been able to get to? Are 1
microsecond interrupts doable in C on this platform?
Again thank you very much for taking the time to respond.
Oliver
San Jose, CA
--- In ARMexpress@yahoogroups.com, Dan Lee <danlee_58@...> wrote:
>
> I'm working on a similar project. In fact I am well on my way.
>
> The general structure of my program is a background While Loop to
take care of all the housekeeping, a Timer/Counter Interrupt to keep
track of time and synchrozation, and an Engine driven Interrupt to
handle the time critical I/O such as spark and injectors. The Engine
driven Interrupt is the highest priority and the shortest process.
> Do as much as possible in the background loop.
>
> The Armite is almost an ideal host for this type of application,
but the Digital I/O is a Bit operation. Maybe someone here can tell
you how to setup the I/O to be Nibble or Byte.
>
> I fire my 8 Injectors sequentially using the HWPWM function, but my
spark is serial since my motor uses a distributor, With a 4 cylinder
motor, you could use HWPWM to fire 4 Injectors and 4 coils
sequentially.
>
> I use two Narrow Band O2 sensors, but they are read individually in
the background loop with A/D converters. I also measure Air & Water
Temperature, Throttle Position and other sensors with A/Ds or Digital
I/O.
>
> --- On Thu, 1/22/09, oratzes <oliver@...> wrote:
>
> From: oratzes <oliver@...>
> Subject: [ARMexpress] Looking for general design input
> To: ARMexpress@yahoogroups.com
> Date: Thursday, January 22, 2009, 1:20 AM
>
> Hi,
>
> My name is Oliver and I am new around here. Just ordered a pair of
ARMmites for
> an
> engine management project I am about to start.
>
> I have a few questions on how to get started:
>
> My background has been C for a very long time and it would be my
choice for the
> dev
> platform.
>
> The project will require to track and modify multiple engine
signals:
> 4 Injectors, 4 Ignition coils (both are simple on/off signals) as
well as 1-2
> pulse modulated
> signals and a few analog signals.
>
> The timing critical part are the injector and ignition signals. At
a maximum
> speed of 10000
> rpm, 1 degree of a revolution only lasts for about 16 microseconds.
I need to
> be able to
> measure the 4+4 signals at an accuracy better than that (probably 2
x more
> frequent or
> about 8 microseconds). The other signals and analog inputs can be
measured
> every 5ms
> or even less frequent.
>
> Based on the measurements I need to drive 4+4 outputs (4 Injectors
and 4
> Ignition coils)
> with variable degrees of modified pulse width and advances/delays
based on
> lookup tables
> in memory.
>
> On a platform like the ARMmite - what are options to implement
this? Build an
> interrupt
> controlled architecture or a continuous loop design that probes all
inputs and
> stores the
> time of transitions in variables?
> Since many of the Inputs are digital, can groups of them (e.g. 8)
be read at
> once, or does it
> have to be serially?
>
> Any other gotchas?
>
> Your help is very much appreciated!
>
> Thx!
>
> Oliver
>
>
> ------------------------------------
>
> Yahoo! Groups Links
>
>
>
>
>
> [Non-text portions of this message have been removed]
>
design. Sounds like you are doing a meagsquirt like project. Have
been following that for a few years now.
My project is slightly different and it is targetd at motrocycle
engines. My logic will only supplement and modify the main ECUs
signals. I need to be able to modify the fuel/ignition map and
various sensor inputs for race-setup purposes.
I am planning to make this openly available as an open source project.
As for the interrupt setup: Any special tips you could share on how
you set them up? Any HW additions/changes for the timer interupt?
What's the highest resolution you have been able to get to? Are 1
microsecond interrupts doable in C on this platform?
Again thank you very much for taking the time to respond.
Oliver
San Jose, CA
--- In ARMexpress@yahoogroups.com, Dan Lee <danlee_58@...> wrote:
>
> I'm working on a similar project. In fact I am well on my way.
>
> The general structure of my program is a background While Loop to
take care of all the housekeeping, a Timer/Counter Interrupt to keep
track of time and synchrozation, and an Engine driven Interrupt to
handle the time critical I/O such as spark and injectors. The Engine
driven Interrupt is the highest priority and the shortest process.
> Do as much as possible in the background loop.
>
> The Armite is almost an ideal host for this type of application,
but the Digital I/O is a Bit operation. Maybe someone here can tell
you how to setup the I/O to be Nibble or Byte.
>
> I fire my 8 Injectors sequentially using the HWPWM function, but my
spark is serial since my motor uses a distributor, With a 4 cylinder
motor, you could use HWPWM to fire 4 Injectors and 4 coils
sequentially.
>
> I use two Narrow Band O2 sensors, but they are read individually in
the background loop with A/D converters. I also measure Air & Water
Temperature, Throttle Position and other sensors with A/Ds or Digital
I/O.
>
> --- On Thu, 1/22/09, oratzes <oliver@...> wrote:
>
> From: oratzes <oliver@...>
> Subject: [ARMexpress] Looking for general design input
> To: ARMexpress@yahoogroups.com
> Date: Thursday, January 22, 2009, 1:20 AM
>
> Hi,
>
> My name is Oliver and I am new around here. Just ordered a pair of
ARMmites for
> an
> engine management project I am about to start.
>
> I have a few questions on how to get started:
>
> My background has been C for a very long time and it would be my
choice for the
> dev
> platform.
>
> The project will require to track and modify multiple engine
signals:
> 4 Injectors, 4 Ignition coils (both are simple on/off signals) as
well as 1-2
> pulse modulated
> signals and a few analog signals.
>
> The timing critical part are the injector and ignition signals. At
a maximum
> speed of 10000
> rpm, 1 degree of a revolution only lasts for about 16 microseconds.
I need to
> be able to
> measure the 4+4 signals at an accuracy better than that (probably 2
x more
> frequent or
> about 8 microseconds). The other signals and analog inputs can be
measured
> every 5ms
> or even less frequent.
>
> Based on the measurements I need to drive 4+4 outputs (4 Injectors
and 4
> Ignition coils)
> with variable degrees of modified pulse width and advances/delays
based on
> lookup tables
> in memory.
>
> On a platform like the ARMmite - what are options to implement
this? Build an
> interrupt
> controlled architecture or a continuous loop design that probes all
inputs and
> stores the
> time of transitions in variables?
> Since many of the Inputs are digital, can groups of them (e.g. 8)
be read at
> once, or does it
> have to be serially?
>
> Any other gotchas?
>
> Your help is very much appreciated!
>
> Thx!
>
> Oliver
>
>
> ------------------------------------
>
> Yahoo! Groups Links
>
>
>
>
>
> [Non-text portions of this message have been removed]
>
-
YahooArchive
- Posts: 1462
- Joined: Fri Oct 19, 2012 5:11 am
Re: Engine controls
> As for the interrupt setup: Any special tips you could share on how
> you set them up? Any HW additions/changes for the timer interupt?
> What's the highest resolution you have been able to get to? Are 1
> microsecond interrupts doable in C on this platform?
This would be pushing the envelope, as the overhead of the interrupt
code would have to be kept to an absolute minimum.
> > The Armite is almost an ideal host for this type of application,
> but the Digital I/O is a Bit operation. Maybe someone here can tell
> you how to setup the I/O to be Nibble or Byte.
> >
The "standard" IO defines do this bit wise, but they are actually
writing to a 32 bit set or clear register. There is also a FIOPIN and
FIOMASK register which allows single operation write for up to the 32
bits. Details in the LPC2103 User Manual.
> you set them up? Any HW additions/changes for the timer interupt?
> What's the highest resolution you have been able to get to? Are 1
> microsecond interrupts doable in C on this platform?
This would be pushing the envelope, as the overhead of the interrupt
code would have to be kept to an absolute minimum.
> > The Armite is almost an ideal host for this type of application,
> but the Digital I/O is a Bit operation. Maybe someone here can tell
> you how to setup the I/O to be Nibble or Byte.
> >
The "standard" IO defines do this bit wise, but they are actually
writing to a 32 bit set or clear register. There is also a FIOPIN and
FIOMASK register which allows single operation write for up to the 32
bits. Details in the LPC2103 User Manual.
-
YahooArchive
- Posts: 1462
- Joined: Fri Oct 19, 2012 5:11 am
Re: Engine controls
--- In ARMexpress@yahoogroups.com, "basicnode" <bruce@...> wrote:
>
> > As for the interrupt setup: Any special tips you could share on how
> > you set them up? Any HW additions/changes for the timer interupt?
> > What's the highest resolution you have been able to get to? Are 1
> > microsecond interrupts doable in C on this platform?
>
> This would be pushing the envelope, as the overhead of the interrupt
> code would have to be kept to an absolute minimum.
>
> > > The Armite is almost an ideal host for this type of application,
> > but the Digital I/O is a Bit operation. Maybe someone here can tell
> > you how to setup the I/O to be Nibble or Byte.
> > >
>
> The "standard" IO defines do this bit wise, but they are actually
> writing to a 32 bit set or clear register. There is also a FIOPIN and
> FIOMASK register which allows single operation write for up to the 32
> bits. Details in the LPC2103 User Manual.
>
Just a few words of encouragement. We use the Haltech F10X in our off
road racer. the improvement is fantastic. it is worth the effort.
The manuals for the Haltech are available on line if you want some
mappinghints. I have just started with the ARM so no help there.
>
> > As for the interrupt setup: Any special tips you could share on how
> > you set them up? Any HW additions/changes for the timer interupt?
> > What's the highest resolution you have been able to get to? Are 1
> > microsecond interrupts doable in C on this platform?
>
> This would be pushing the envelope, as the overhead of the interrupt
> code would have to be kept to an absolute minimum.
>
> > > The Armite is almost an ideal host for this type of application,
> > but the Digital I/O is a Bit operation. Maybe someone here can tell
> > you how to setup the I/O to be Nibble or Byte.
> > >
>
> The "standard" IO defines do this bit wise, but they are actually
> writing to a 32 bit set or clear register. There is also a FIOPIN and
> FIOMASK register which allows single operation write for up to the 32
> bits. Details in the LPC2103 User Manual.
>
Just a few words of encouragement. We use the Haltech F10X in our off
road racer. the improvement is fantastic. it is worth the effort.
The manuals for the Haltech are available on line if you want some
mappinghints. I have just started with the ARM so no help there.
-
YahooArchive
- Posts: 1462
- Joined: Fri Oct 19, 2012 5:11 am
Re: Engine controls
Megasquirt does not support Sequential Injection, mine does.
I use Timer0 interrupt to increment Millisecond and Second counters and for a
variable Duty Cycle Idle Speed Controller, and the FIQ Interrupt for the
Ignition and Injector operations.
I have run the code on the Armmite board, but have not done any benchmarks. My
FIQ Interrupt proceedure has the minumum amount of code. It should run fast, but
1 Microsecond is doubtful.
--- On Thu, 1/22/09, oratzes <oliver@ratzesberger.com> wrote:
From: oratzes <oliver@ratzesberger.com>
Subject: [ARMexpress] Re: Looking for general design input
To: ARMexpress@yahoogroups.com
Date: Thursday, January 22, 2009, 1:12 PM
Very much appriciate your input. Have been thinking about a similar
design. Sounds like you are doing a meagsquirt like project. Have
been following that for a few years now.
My project is slightly different and it is targetd at motrocycle
engines. My logic will only supplement and modify the main ECUs
signals. I need to be able to modify the fuel/ignition map and
various sensor inputs for race-setup purposes.
I am planning to make this openly available as an open source project.
As for the interrupt setup: Any special tips you could share on how
you set them up? Any HW additions/changes for the timer interupt?
What's the highest resolution you have been able to get to? Are 1
microsecond interrupts doable in C on this platform?
Again thank you very much for taking the time to respond.
Oliver
San Jose, CA
--- In ARMexpress@yahoogroups.com, Dan Lee <danlee_58@...> wrote:
>
> I'm working on a similar project. In fact I am well on my way.
>
> The general structure of my program is a background While Loop to
take care of all the housekeeping, a Timer/Counter Interrupt to keep
track of time and synchrozation, and an Engine driven Interrupt to
handle the time critical I/O such as spark and injectors. The Engine
driven Interrupt is the highest priority and the shortest process.
> Do as much as possible in the background loop.
>
> The Armite is almost an ideal host for this type of application,
but the Digital I/O is a Bit operation. Maybe someone here can tell
you how to setup the I/O to be Nibble or Byte.
>
> I fire my 8 Injectors sequentially using the HWPWM function, but my
spark is serial since my motor uses a distributor, With a 4 cylinder
motor, you could use HWPWM to fire 4 Injectors and 4 coils
sequentially.
>
> I use two Narrow Band O2 sensors, but they are read individually in
the background loop with A/D converters. I also measure Air & Water
Temperature, Throttle Position and other sensors with A/Ds or Digital
I/O.
>
> --- On Thu, 1/22/09, oratzes <oliver@...> wrote:
>
> From: oratzes <oliver@...>
> Subject: [ARMexpress] Looking for general design input
> To: ARMexpress@yahoogroups.com
> Date: Thursday, January 22, 2009, 1:20 AM
>
> Hi,
>
> My name is Oliver and I am new around here. Just ordered a pair of
ARMmites for
> an
> engine management project I am about to start.
>
> I have a few questions on how to get started:
>
> My background has been C for a very long time and it would be my
choice for the
> dev
> platform.
>
> The project will require to track and modify multiple engine
signals:
> 4 Injectors, 4 Ignition coils (both are simple on/off signals) as
well as 1-2
> pulse modulated
> signals and a few analog signals.
>
> The timing critical part are the injector and ignition signals. At
a maximum
> speed of 10000
> rpm, 1 degree of a revolution only lasts for about 16 microseconds.
I need to
> be able to
> measure the 4+4 signals at an accuracy better than that (probably 2
x more
> frequent or
> about 8 microseconds). The other signals and analog inputs can be
measured
> every 5ms
> or even less frequent.
>
> Based on the measurements I need to drive 4+4 outputs (4 Injectors
and 4
> Ignition coils)
> with variable degrees of modified pulse width and advances/delays
based on
> lookup tables
> in memory.
>
> On a platform like the ARMmite - what are options to implement
this? Build an
> interrupt
> controlled architecture or a continuous loop design that probes all
inputs and
> stores the
> time of transitions in variables?
> Since many of the Inputs are digital, can groups of them (e.g. 8)
be read at
> once, or does it
> have to be serially?
>
> Any other gotchas?
>
> Your help is very much appreciated!
>
> Thx!
>
> Oliver
>
>
> ------------------------------------
>
> Yahoo! Groups Links
>
>
>
>
>
> [Non-text portions of this message have been removed]
>
------------------------------------
Yahoo! Groups Links
[Non-text portions of this message have been removed]
I use Timer0 interrupt to increment Millisecond and Second counters and for a
variable Duty Cycle Idle Speed Controller, and the FIQ Interrupt for the
Ignition and Injector operations.
I have run the code on the Armmite board, but have not done any benchmarks. My
FIQ Interrupt proceedure has the minumum amount of code. It should run fast, but
1 Microsecond is doubtful.
--- On Thu, 1/22/09, oratzes <oliver@ratzesberger.com> wrote:
From: oratzes <oliver@ratzesberger.com>
Subject: [ARMexpress] Re: Looking for general design input
To: ARMexpress@yahoogroups.com
Date: Thursday, January 22, 2009, 1:12 PM
Very much appriciate your input. Have been thinking about a similar
design. Sounds like you are doing a meagsquirt like project. Have
been following that for a few years now.
My project is slightly different and it is targetd at motrocycle
engines. My logic will only supplement and modify the main ECUs
signals. I need to be able to modify the fuel/ignition map and
various sensor inputs for race-setup purposes.
I am planning to make this openly available as an open source project.
As for the interrupt setup: Any special tips you could share on how
you set them up? Any HW additions/changes for the timer interupt?
What's the highest resolution you have been able to get to? Are 1
microsecond interrupts doable in C on this platform?
Again thank you very much for taking the time to respond.
Oliver
San Jose, CA
--- In ARMexpress@yahoogroups.com, Dan Lee <danlee_58@...> wrote:
>
> I'm working on a similar project. In fact I am well on my way.
>
> The general structure of my program is a background While Loop to
take care of all the housekeeping, a Timer/Counter Interrupt to keep
track of time and synchrozation, and an Engine driven Interrupt to
handle the time critical I/O such as spark and injectors. The Engine
driven Interrupt is the highest priority and the shortest process.
> Do as much as possible in the background loop.
>
> The Armite is almost an ideal host for this type of application,
but the Digital I/O is a Bit operation. Maybe someone here can tell
you how to setup the I/O to be Nibble or Byte.
>
> I fire my 8 Injectors sequentially using the HWPWM function, but my
spark is serial since my motor uses a distributor, With a 4 cylinder
motor, you could use HWPWM to fire 4 Injectors and 4 coils
sequentially.
>
> I use two Narrow Band O2 sensors, but they are read individually in
the background loop with A/D converters. I also measure Air & Water
Temperature, Throttle Position and other sensors with A/Ds or Digital
I/O.
>
> --- On Thu, 1/22/09, oratzes <oliver@...> wrote:
>
> From: oratzes <oliver@...>
> Subject: [ARMexpress] Looking for general design input
> To: ARMexpress@yahoogroups.com
> Date: Thursday, January 22, 2009, 1:20 AM
>
> Hi,
>
> My name is Oliver and I am new around here. Just ordered a pair of
ARMmites for
> an
> engine management project I am about to start.
>
> I have a few questions on how to get started:
>
> My background has been C for a very long time and it would be my
choice for the
> dev
> platform.
>
> The project will require to track and modify multiple engine
signals:
> 4 Injectors, 4 Ignition coils (both are simple on/off signals) as
well as 1-2
> pulse modulated
> signals and a few analog signals.
>
> The timing critical part are the injector and ignition signals. At
a maximum
> speed of 10000
> rpm, 1 degree of a revolution only lasts for about 16 microseconds.
I need to
> be able to
> measure the 4+4 signals at an accuracy better than that (probably 2
x more
> frequent or
> about 8 microseconds). The other signals and analog inputs can be
measured
> every 5ms
> or even less frequent.
>
> Based on the measurements I need to drive 4+4 outputs (4 Injectors
and 4
> Ignition coils)
> with variable degrees of modified pulse width and advances/delays
based on
> lookup tables
> in memory.
>
> On a platform like the ARMmite - what are options to implement
this? Build an
> interrupt
> controlled architecture or a continuous loop design that probes all
inputs and
> stores the
> time of transitions in variables?
> Since many of the Inputs are digital, can groups of them (e.g. 8)
be read at
> once, or does it
> have to be serially?
>
> Any other gotchas?
>
> Your help is very much appreciated!
>
> Thx!
>
> Oliver
>
>
> ------------------------------------
>
> Yahoo! Groups Links
>
>
>
>
>
> [Non-text portions of this message have been removed]
>
------------------------------------
Yahoo! Groups Links
[Non-text portions of this message have been removed]
-
YahooArchive
- Posts: 1462
- Joined: Fri Oct 19, 2012 5:11 am
Re: Engine controls
Again, your input is very much appreciated!
I should get my setup within the next few days and will get started shortely
after. I will
come back with questions in case I run into problems. I do have some reading
todo to get
myself familiar with the ARM cpu and the C libraries that come with the board.
Have a great day!
Oliver
--- In ARMexpress@yahoogroups.com, Dan Lee <danlee_58@...> wrote:
>
> Megasquirt does not support Sequential Injection, mine does.
>
> I use Timer0 interrupt to increment Millisecond and Second counters and for a
variable
Duty Cycle Idle Speed Controller, and the FIQ Interrupt for the Ignition and
Injector
operations.
>
> I have run the code on the Armmite board, but have not done any benchmarks. My
FIQ
Interrupt proceedure has the minumum amount of code. It should run fast, but 1
Microsecond is doubtful.
>
>
>
> --- On Thu, 1/22/09, oratzes <oliver@...> wrote:
>
> From: oratzes <oliver@...>
> Subject: [ARMexpress] Re: Looking for general design input
> To: ARMexpress@yahoogroups.com
> Date: Thursday, January 22, 2009, 1:12 PM
>
> Very much appriciate your input. Have been thinking about a similar
> design. Sounds like you are doing a meagsquirt like project. Have
> been following that for a few years now.
>
> My project is slightly different and it is targetd at motrocycle
> engines. My logic will only supplement and modify the main ECUs
> signals. I need to be able to modify the fuel/ignition map and
> various sensor inputs for race-setup purposes.
>
> I am planning to make this openly available as an open source project.
>
> As for the interrupt setup: Any special tips you could share on how
> you set them up? Any HW additions/changes for the timer interupt?
> What's the highest resolution you have been able to get to? Are 1
> microsecond interrupts doable in C on this platform?
>
> Again thank you very much for taking the time to respond.
>
> Oliver
> San Jose, CA
>
> --- In ARMexpress@yahoogroups.com, Dan Lee <danlee_58@> wrote:
> >
> > I'm working on a similar project. In fact I am well on my way.
> >
> > The general structure of my program is a background While Loop to
> take care of all the housekeeping, a Timer/Counter Interrupt to keep
> track of time and synchrozation, and an Engine driven Interrupt to
> handle the time critical I/O such as spark and injectors. The Engine
> driven Interrupt is the highest priority and the shortest process.
> > Do as much as possible in the background loop.
> >
> > The Armite is almost an ideal host for this type of application,
> but the Digital I/O is a Bit operation. Maybe someone here can tell
> you how to setup the I/O to be Nibble or Byte.
> >
> > I fire my 8 Injectors sequentially using the HWPWM function, but my
> spark is serial since my motor uses a distributor, With a 4 cylinder
> motor, you could use HWPWM to fire 4 Injectors and 4 coils
> sequentially.
> >
> > I use two Narrow Band O2 sensors, but they are read individually in
> the background loop with A/D converters. I also measure Air & Water
> Temperature, Throttle Position and other sensors with A/Ds or Digital
> I/O.
> >
> > --- On Thu, 1/22/09, oratzes <oliver@> wrote:
> >
> > From: oratzes <oliver@>
> > Subject: [ARMexpress] Looking for general design input
> > To: ARMexpress@yahoogroups.com
> > Date: Thursday, January 22, 2009, 1:20 AM
> >
> > Hi,
> >
> > My name is Oliver and I am new around here. Just ordered a pair of
> ARMmites for
> > an
> > engine management project I am about to start.
> >
> > I have a few questions on how to get started:
> >
> > My background has been C for a very long time and it would be my
> choice for the
> > dev
> > platform.
> >
> > The project will require to track and modify multiple engine
> signals:
> > 4 Injectors, 4 Ignition coils (both are simple on/off signals) as
> well as 1-2
> > pulse modulated
> > signals and a few analog signals.
> >
> > The timing critical part are the injector and ignition signals. At
> a maximum
> > speed of 10000
> > rpm, 1 degree of a revolution only lasts for about 16 microseconds.
> I need to
> > be able to
> > measure the 4+4 signals at an accuracy better than that (probably 2
> x more
> > frequent or
> > about 8 microseconds). The other signals and analog inputs can be
> measured
> > every 5ms
> > or even less frequent.
> >
> > Based on the measurements I need to drive 4+4 outputs (4 Injectors
> and 4
> > Ignition coils)
> > with variable degrees of modified pulse width and advances/delays
> based on
> > lookup tables
> > in memory.
> >
> > On a platform like the ARMmite - what are options to implement
> this? Build an
> > interrupt
> > controlled architecture or a continuous loop design that probes all
> inputs and
> > stores the
> > time of transitions in variables?
> > Since many of the Inputs are digital, can groups of them (e.g. 8)
> be read at
> > once, or does it
> > have to be serially?
> >
> > Any other gotchas?
> >
> > Your help is very much appreciated!
> >
> > Thx!
> >
> > Oliver
> >
> >
> > ------------------------------------
> >
> > Yahoo! Groups Links
> >
> >
> >
> >
> >
> > [Non-text portions of this message have been removed]
> >
>
>
>
> ------------------------------------
>
> Yahoo! Groups Links
>
>
>
>
>
> [Non-text portions of this message have been removed]
>
I should get my setup within the next few days and will get started shortely
after. I will
come back with questions in case I run into problems. I do have some reading
todo to get
myself familiar with the ARM cpu and the C libraries that come with the board.
Have a great day!
Oliver
--- In ARMexpress@yahoogroups.com, Dan Lee <danlee_58@...> wrote:
>
> Megasquirt does not support Sequential Injection, mine does.
>
> I use Timer0 interrupt to increment Millisecond and Second counters and for a
variable
Duty Cycle Idle Speed Controller, and the FIQ Interrupt for the Ignition and
Injector
operations.
>
> I have run the code on the Armmite board, but have not done any benchmarks. My
FIQ
Interrupt proceedure has the minumum amount of code. It should run fast, but 1
Microsecond is doubtful.
>
>
>
> --- On Thu, 1/22/09, oratzes <oliver@...> wrote:
>
> From: oratzes <oliver@...>
> Subject: [ARMexpress] Re: Looking for general design input
> To: ARMexpress@yahoogroups.com
> Date: Thursday, January 22, 2009, 1:12 PM
>
> Very much appriciate your input. Have been thinking about a similar
> design. Sounds like you are doing a meagsquirt like project. Have
> been following that for a few years now.
>
> My project is slightly different and it is targetd at motrocycle
> engines. My logic will only supplement and modify the main ECUs
> signals. I need to be able to modify the fuel/ignition map and
> various sensor inputs for race-setup purposes.
>
> I am planning to make this openly available as an open source project.
>
> As for the interrupt setup: Any special tips you could share on how
> you set them up? Any HW additions/changes for the timer interupt?
> What's the highest resolution you have been able to get to? Are 1
> microsecond interrupts doable in C on this platform?
>
> Again thank you very much for taking the time to respond.
>
> Oliver
> San Jose, CA
>
> --- In ARMexpress@yahoogroups.com, Dan Lee <danlee_58@> wrote:
> >
> > I'm working on a similar project. In fact I am well on my way.
> >
> > The general structure of my program is a background While Loop to
> take care of all the housekeeping, a Timer/Counter Interrupt to keep
> track of time and synchrozation, and an Engine driven Interrupt to
> handle the time critical I/O such as spark and injectors. The Engine
> driven Interrupt is the highest priority and the shortest process.
> > Do as much as possible in the background loop.
> >
> > The Armite is almost an ideal host for this type of application,
> but the Digital I/O is a Bit operation. Maybe someone here can tell
> you how to setup the I/O to be Nibble or Byte.
> >
> > I fire my 8 Injectors sequentially using the HWPWM function, but my
> spark is serial since my motor uses a distributor, With a 4 cylinder
> motor, you could use HWPWM to fire 4 Injectors and 4 coils
> sequentially.
> >
> > I use two Narrow Band O2 sensors, but they are read individually in
> the background loop with A/D converters. I also measure Air & Water
> Temperature, Throttle Position and other sensors with A/Ds or Digital
> I/O.
> >
> > --- On Thu, 1/22/09, oratzes <oliver@> wrote:
> >
> > From: oratzes <oliver@>
> > Subject: [ARMexpress] Looking for general design input
> > To: ARMexpress@yahoogroups.com
> > Date: Thursday, January 22, 2009, 1:20 AM
> >
> > Hi,
> >
> > My name is Oliver and I am new around here. Just ordered a pair of
> ARMmites for
> > an
> > engine management project I am about to start.
> >
> > I have a few questions on how to get started:
> >
> > My background has been C for a very long time and it would be my
> choice for the
> > dev
> > platform.
> >
> > The project will require to track and modify multiple engine
> signals:
> > 4 Injectors, 4 Ignition coils (both are simple on/off signals) as
> well as 1-2
> > pulse modulated
> > signals and a few analog signals.
> >
> > The timing critical part are the injector and ignition signals. At
> a maximum
> > speed of 10000
> > rpm, 1 degree of a revolution only lasts for about 16 microseconds.
> I need to
> > be able to
> > measure the 4+4 signals at an accuracy better than that (probably 2
> x more
> > frequent or
> > about 8 microseconds). The other signals and analog inputs can be
> measured
> > every 5ms
> > or even less frequent.
> >
> > Based on the measurements I need to drive 4+4 outputs (4 Injectors
> and 4
> > Ignition coils)
> > with variable degrees of modified pulse width and advances/delays
> based on
> > lookup tables
> > in memory.
> >
> > On a platform like the ARMmite - what are options to implement
> this? Build an
> > interrupt
> > controlled architecture or a continuous loop design that probes all
> inputs and
> > stores the
> > time of transitions in variables?
> > Since many of the Inputs are digital, can groups of them (e.g. 8)
> be read at
> > once, or does it
> > have to be serially?
> >
> > Any other gotchas?
> >
> > Your help is very much appreciated!
> >
> > Thx!
> >
> > Oliver
> >
> >
> > ------------------------------------
> >
> > Yahoo! Groups Links
> >
> >
> >
> >
> >
> > [Non-text portions of this message have been removed]
> >
>
>
>
> ------------------------------------
>
> Yahoo! Groups Links
>
>
>
>
>
> [Non-text portions of this message have been removed]
>