This page lists important changes to the firmware. Check this before downloading a firmware that is meant for production
When updating the board with latest firmware, please check if any of the changes affects your configuration and take action!
Developers: please update GenBoard/Manual matrix when configuration semantics change. Ask on that page (in the relevant matrix element; make a line if necessary and start to put in links you find) for questions about config variables.
Downloadable firmware releases
Download [firmware.zip release-8 since 2004-11-24]
Although it has a compiled vems.hex binary (=> no compiling needed by the enduser), at the minimum check my_make if using it. It has MSNS option defined, that should work with MegaTunix or MegaTune. vems.hex and my_make files should probably move to subdirs (several meaningful different my_make options - feel free to compile + package)
Changelog - from 20041124 release
- a small patch that allows tps_low > tps_high configuration for silly TPS sensor that reads higher voltage for lower throttle opening
- AlphaN
- engine.batt displayed on LCD mlp06
- BoostControl low freq PWM configurable
- injector PW reading changed to 10 usec on LCD
- MegaTunix stores VE to both ve_ref and learnt VE table
- send the real ("learnt" if learning is enabled) VE table to MegaTunix not the ve_ref table (that can be confusing to the unaware)
- highest RPM and kPa bin can be written from MegaTunix too
- internal rx21 variables updated when kPa or RPM bins are written from MegaTunix
Remember:
- WhatEverYouDoYouDoItAtYourOwnRisk
- GenBoard/Manual/License/WBSensor applies to the release, since it normally has WBO2 enabled in my_make
Developers
NOTE: someone please review and commit changes to CVS branch STABLE1_0 so the latest stable release is available using the STABLE1_0 tag in CVS.
Developers, please ensure any code you commit to this branch has been well tested. The HEAD tag will eventually become stable enough that it will be tagged as STABLE1_1 and thus will become the "latest" stable firmware.
The STABLE1_0 branch can be obtained via read-only cvs from windows, start-menu, cmd:\n
set CVSROOT=:pserver:anonymous@cvs.sourceforge.net:/cvsroot/megasquirtavr <enter> set HOME=c: <enter> cvs login<enter> ( <enter> again for password, ignore any error messages ) cvs update -d -r STABLE1_0 or (if no working copy yet): cvs checkout -r STABLE1_0 firmware
2005-02-20
- committed 2x20 LCD support. This is identical to 4x20 except that it has twice the number of pages. Every second page is just the bottom 2 lines of the 4x20 version.
2005-02-08
- stable revision of 2004/11/24 16:00 was tagged as STABLE_1_0. This was done in order to separate alpha quality code found in HEAD with tested production quality code we should be running. Each revision tag will only be modified with bugfixes.
2004-10-31
- BoostController (old variables not changed) and improved injector-opening rampup control. injocfuel semantics changed, see GenBoard/Manual/Config/InjectorOpening
2004-10-27
- Improved idle control. Ignition advance is adjusted to maintain a constant idling rpm. To disable this feature, set iac_ign_advance_change=00, iac_ign_retard_change=00, iac_ign_advance_limit=00, iac_ign_retard_limit=00, iac_ign_threshold=ff.
2004-10-10
- speed-density precision bumped up greatly. The first chance ever for the diy-ers to do precise fueling for turbo engines. The old semantics we used earlier (inherited from motorola-megasquirt) used 4% (!) steps at 25kPa MAP (and 1% steps at 100kPa). This was the last remained inferior signal precision in the whole fuel-calculation (we made everything nice in the meantime, eg. ego correction. this waited somehow...). Now this signal is 11 bit internally (1/20 %).
- set config.kpafac to your MAP range [2kPa].
- 2.5 bar MAP sensor: 7D
- 1.15 bar MAP sensor: (hexa) 39
- 5.1 bar MAP sensor (impressive boost !!): FF (max value)
Note that this makes GenBoard/VerThree the first diy ECM that supports boost pressure higher than 150 kPa without hack. (this was the main reason for the change: a racecar runs at 200..240 kPa boost and they asked us to make precision superior)
2004-09-17
- eventqueue changed in some ways:
- more reasonable inlining
- faster reaction
- better readability
CVS head, with eventqueue.c 1.96 (or earlier 1.94, but not 1.95 experiment) is good for production.
Played with eventqueue, make it simpler and faster. For readability and marketing reasons; because some people are concerned about parameters that cannot be measured in engine output, only on oscilloscope. At 15000 RPM measured 6/20 degree average delay in the ign signal, this is now lowered to about 4 / 100 degree (could be even better with further changes). This is so close to theoretical optimum 0.000000 sec that it means less than 0.3C degree in intake temps (MAT).
2004-09-12
- comm.c tabledump improved so it can send out the 16x8 table (if someone forgot what he sent in :-), someone please test mct command (write here) -> mct command verified, j/l/n/r 16 wide, h/k 8 wide - DB . If VE_TABLE_FIX is defined in my_make (what a bad name !!!) the 16 bit learnt VE table is outputted in j[x]=xxxx xxxx xxxx ... format, possibly 16 values on a line (if VE_SIZE_RPM=16).
2004-08-27
- config.cwl, cwh, injpwmt and primep can be configured to higher than 25.5 msec : see GenBoard/Manual/Config/CoolantTemperature
2004-08-25
- knock sensor code is now allowed to modify ignition advance. Unless you have mounted a knock sensor, set config.knock_conf = 00 AND config.knock_default_retard = 00 such that the actual ignition advance, as specified in the n-table, is unaffected.
2004-08-08
- the multitooth branch initialized engine.igncount properly => cranking was long for coil-type setup. (it was immediately obvious from TimingLight table tests, so I guess everyone uses multitooth trigger). Anyway, anyone with coil-type setup should upgrade.
2004-07-28
- synchronized o2() to WBO2 calc_afr(). This allows setting faster EGO convergence, without the risk of divergent behavior for bad (speed_limit =) config.ego_pid_kp; config setting.
- maybe we could make calc_afr() even more frequent, with increasing the frequency of nernst sampling or just running the pump controller more often. Someone could experiment with it.
2004-07-27
- multitooth setup improved.
- Dave will test it soon (and document the new variable), and than it worths to upgrade (with multitooth setup).
- preparations done for time from last possible pulse
2004-07-25
- change config.tooth_wheel_twidth2 to include the config.tooth_wheel_twidth1 as well (add tooth_wheel_twidth1 at upgrade if you had it configured before);
- 2 * tooth_wheel_twidth1 for a 36-1 and
- 3 * tooth_wheel_twidth1 for a 60-2
2004-07-07
variable intake actuator (simple RPM-based switch) and WOT actuator (that switches at WOT, but only above a certain RPM) for NOS made easily configurable.
Both the RPM and the output channel is configurable. On GenBoard/VerThree you can select a free channel, which can be a 100A FET if you like (like IRL2203, but the connector cannot handle that current). Even several channels (this is only for the injector FETs) can be selected to switch at the same time, according to GenBoard/Manual/DigitalOut
Set all these config variables to FF if you don't need the feature:\n
uint8_t act_wot_rpm; // WOT switch RPM threshold (FF=disable) uint8_t act_wot_channel; // WOT switch output channel selector (P259_0) uint8_t act_rpm_rpm; // RPM switch RPM threshold (FF=disable) uint8_t act_rpm_channel; // RPM switch output channel selector
Iac.conf is extended to select between a ON/OFF idle air valve, and a PWM controlled type by unsetting/setting bit 3 of iac.conf
2004-05-26
Lambdacorr table is now unconditionally used. If no l-table was used before, then add the following (stoich) table to tables.txt\n
### lambdacorr: afr=14.7 ### l[0]=38 38 38 38 38 38 38 38 l[1]=38 38 38 38 38 38 38 38 l[2]=38 38 38 38 38 38 38 38 l[3]=38 38 38 38 38 38 38 38 l[4]=38 38 38 38 38 38 38 38 l[5]=38 38 38 38 38 38 38 38 l[6]=38 38 38 38 38 38 38 38 l[7]=38 38 38 38 38 38 38 38
The lambdacorr-values are a multiplied enrichment: \n
lambdacorr = (l+200)/256
You can see that 56 (hexadecimal 38) means a 1.0 (stoich) lambdacorr value.