_ _ ( ) _ ( ) | | ( ) | | | | | | | | | (_/ \_) | `\___x___/'
_ _ | | | | | |_| | | _ | | | | | \_| |_/
### ## ### ## ## ## ## ## ## ## #### ###
## ## ## ## ## ####
## ## ##### ## ## ## ## #####
IMPORTANT: enter the case-INsensitive alphabetic (no numbers) code AND WRITE SOME SHORT summary of changes (below) if you are saving changes. (not required for previewing changes). Wiki-spamming is not tolerated, will be removed, so it does NOT even show up in history. Spammers go away now. Visit Preferences to set your user name Summary of change: '''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 [http://www.vems.hu/files/Firmware/release/v3_firmware_2004-11-24_v11_2.zip release 1.0.11 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 dropped in favor of a faster interpolation implementation '''since v9''': camsync with coil-type primarytrigger (not restricted to multitooth). '''IMPORTANT: USE secondary_trigger=02 if you don't use camsync, otherwise (eg. with commonly used FF value, that works no more) you won't get spark nor fuel !!!!!''' '''since v11''': * kpa configuration resolution '''can be''' changed to 2kPa (but is 1kPa by default) for very high boost engines: add ''MY_CONF += -D KPA_CONFIG_RESOLUTION=2'' to my_make * Note1: changes also needed in MegaTune vemsv3.ini * Note2: all the following config variables change to max 510kPa range (2kpa unit): ** k[] table ** ego_maxmap ** config.inj_stage2_start_map ** tpsdot rates ** hybrid_rpm_a ** hybrid_rpm_m ** some kpa text on LCD will become 2 kPa (eg. the axis in mtt menu) ** misc1out_minmap ** misc1out_maxmap ** misc2out_minmap ** misc2out_maxmap ** ve_learn_kpa_scale (this is not in 2kPa units, but it needs to be doubled ?) * restart not needed after adjusting wbo2_nernstdc_target (from menu) to take effect. * iac integral starts at max value, not 0 (higher iac position => faster startup without throttle) * better wbo2 leave_warmup condition (leaves warmup and starts normal heater control earlier if sensor was warm for some reason; eg. because of mde02) * after ''mdd02'' command, fuel is cut if throttle is pressed (above tps_thresh). ''mdd00'' changes back to normal behaviour. * comm.c changed for recent r008 MegaTune (more variables logged) * in the r1.0.11 minor lcd_display changes: "RPM:" string was addded (back), and fixed the scale of free-air o2 on LCD * in the r11 there is a new feature on LCD page00 (mlp00): La:... shows Lambda (like "0.95" or "1.02") or O2% (like "20.7" - note that the dot moves to different position in this case!) or undefined (??.?) ** note: there was a small problem with 02 display, so in the r11_v2 in lcd_print_current_o2() a small fix was made to lcd_print_XX_X( t32 >> 8 ); ** note: 'mde02' command must be used to switch on WBO2 unless engine is running (trigger is applied). This is intended this way. '''Remember:''' * WhatEverYouDoYouDoItAtYourOwnRisk * GenBoard/Manual/License/WBSensor applies to the release, since it normally has WBO2 enabled in my_make ---- '''Developers''' NOTE: someone '''please review''' [http://www.vems.hu/files/Firmware/patches/firmware_changes_FOR_REVIEW_since_STABLE1_0.zip zipped diff] prepared for review: made appr 1/3 size mainly by ripping offending $Id comments. '''Already commited to CVS branch STABLE1_0''' Use the above list to identify changes. Takes appr. 1.5 hours. Note that '''boostcontrol.[ch] must be checked separately and there is ongoing work on lcd_display.c''' STABLE1_0 is for testing, it's not released stuff (we use the announced zip for releases). '''The STABLE1_0 branch can be obtained via read-only cvs from windows, start-menu, cmd:''' <code> 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 </code> ---- '''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) if ''kpafac'' value is set to 00 (not recommended), the old behavior is maintained, where ''(config.config11 & _BV(MAP_SENSOR))'' decides if the 2.5 bar or 1.15 bar lookup table is used. This way it is possible to configure nonlinear table (not sure if it is useful), but precision is inferior (anyway, it is possible to make precision better: tell us if you need nonlinear for some reason, and higher precision). '''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); That makes tooth_wheel_twidth2 = * 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:''' <code> 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 </code> 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 See IdleControl/IdleValvePWM ----- '''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 <code> ### 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 </code> The lambdacorr-values are a multiplied enrichment: <code> lambdacorr = (l+200)/256 </code> You can see that 56 (hexadecimal 38) means a 1.0 (stoich) lambdacorr value. Optional: Add document to category: Wiki formatting: * is Bullet list ** Bullet list subentry ... '''Bold''', ---- is horizontal ruler, <code> preformatted text... </code> See wiki editing HELP for tables and other formatting tips and tricks.