The latest code version 2.00D has been released: http://www.msgpio.com/manuals/mshift/V2code.html The user guide is here: http://www.msgpio.com/manuals/mshift/V2tune.html
This includes one new user parameter ('General Settings/TCC Settings/Unlock At RPM') to set the lower rpm threshold for full time TCC mode. This is discussed in another thread.
The gear checking for the full time TCC mode unlocking was also fixed.
The latest 2.00E beta code has been released. It is here: http://www.msgpio.com/manuals/mshift/V2code.html (you may have to refresh the page in your browser)
This code adds:
- a smoothing factor to the VSS/speedo value (discussed here: viewtopic.php?f=4&p=1748#p1748).
- a limit of the maximum permitted VSS masking value (to a maximum of 99). If the user enters a larger value, 99 will be used.
- the WOT_flag has been added to the outpc/datalog. This flag is 0 if the code doesn't think the throttle is wide open, and count up from 1 to 10 seconds for the hysteresis if the controller thinks the throttle is wide open (based on the setting in the throttle factors).
2.00Ex code has been posted on the beta code page: http://www.msgpio.com/manuals/mshift/V2code.html The same INI is used.
This fixes a speedo wrap-around issue discussed in another thread (viewtopic.php?f=4&t=163&p=1752#p1752).
First, my apologies for doing three codes in one day - I do usually try to be a little more rational than this!
I have just put up 2.00Ey code here: http://www.msgpio.com/manuals/mshift/V2code.html This uses the same 2.00E INI as before.
- fixes a bug reported privately in which the last column of the gear table wasn't always being used.
- changes the default max speed to 150 mph from 140 mph (purely for expediency while testing, since the 4th isn't selected until 140 mph @ 100kPa in the default shift table),
- changes the default VSS smoothing factor to 4 from 8.
- rearranges the VSS smoothing calculation yet again for somewhat better results. However, I am not really happy with this implementation of the smoothing, and will likely re-do it in the next week or so.
I have put the latest 2.00Ez code and INI here: http://www.msgpio.com/manuals/mshift/V2code.html
- reinstates the 200% limit on the vss masking (which had been reduced to 99 in the previous version of the code). This limit was in the INI and the code (that is, the code checked if the user value was greater than 99, and if it was it used 99 instead). This is discussed in another thread. With the vss masking factor set at 100 percent, the range of acceptable hertz is 50% to 200% of the current average value (Â½ xto 2x). With a value of 200%, the acceptable frequency range is only limited to be at least 33% of the current average value, there is no upper limit.
- increases the tolerance on the minimum number of vss 'tics' when at the max speed setting. In older codes, the masking was cut in half at the limit. This was because the speed limit frequency and the minimum number of pulses/sec coincided, so only the lower limit on frequency was used. This could cause the speedo to 'drop-out' in some cases. This latest code allows a tolerance above the maximum speed frequency, so that the upper range is not rejecting pulses that are actually appropriate.
- RPM checking is enabled by default (and should be left on whenever possible - to prevent speedo issues from causing potentially damaging downshifts).
- fixes an issue with the TCC PWM% reporting introduced in the last version of the code (discussed in another thread).
So this code is as much about going backwards as forwards! But it is the recommended code at this point for everyone.
I have put 2.00F code here: http://www.msgpio.com/manuals/mshift/V2code.html
- disables the speedo averaging (http://www.msgpio.com/manuals/mshift/V2tune.html#gv) until the vehicle speed reaches 1.5 times the user's minimum speed setting (http://www.msgpio.com/manuals/mshift/V2tune.html#gs). This should help prevent the speedo from becoming stuck at lower speed and larger VSS smoothing factor values.
- has a few code modifications to the auto shift hysteresis (http://www.msgpio.com/manuals/mshift/V2tune.html#gs). The shift hysteresis will prevent shifts until the speed or load has changed (from the speed/load at the last shift) either up or down by the hysteresis value. The default speed hysteresis is 3.5 mph. If the last shift was at 60 mph (and the load doesn't change), another shift won't be allowed until the speed reaches either 63.5 mph or 56.5 mph (at which point the shifts will be dictated by the shift table again). The intent is to prevent noise in the VSS speedo signal or MAP singal from causing the controller to jump back and forth if the speed hovers around a shift speed. Older codes had hysteresis in them, this version has been further refined.
I have quickly tested the shift functions, hysteresis operation and the TCC PWM operation, and while these appear to work as intended I need to do much more testing, of course.
The 2.00Fx code is here: http://www.msgpio.com/manuals/mshift/V2code.html
This code has a number of changes and fixes:
- the load based hysteresis has changed name to "Shift Load Hysteresis" (from 'Shift kPa Hysteresis') and it has been scaled so that is now runs from 0 to 255 kPa (rather than 0 to 25.5 kPa). The default remains at 10 kPa. If you are loading an MSQ from a previous code, your Shift Load Hysteresis value will be 10 times (10x) the value in the old code. So if you had 13.0 kPa before, you will now have 130 kPa with this 2.00Fx code. You have to adjust this value manually back to 13 to get the same behavior as previous codes. (The name change was made because if the TPS based load is used, the load hysteresis is used on the TPS value, and is in % from 0 to 255% - though only up to 100% applies anything above that is 'overkill'.)
- the target gear in neutral, park and reverse is now set based on the auto gear table. In older codes, the target gear was undefined in PNR, which could lead to a sudden upshift if you shifted from neutral to one of the drive gears. The auto gear table is used rather than setting the target gear to 1 because a driver might conceivably shift into neutral while moving. Note that setting the target gear does not necessarily command a shift, it just tells the controller what gear to go to if there is a shift.
- adds the user parameter 'digital switch debounce' to the shift factors menu (http://www.msgpio.com/manuals/mshift/V2tune.html#gs) for the inputs used to determine the gear lever position. This factor was always in the code, but has now been exposed. The default is now 80 (from 40 in older codes). This parameter can be useful for preventing the controller from being confused if the manual gear lever is moving and in an 'indeterminate state' as the lever passes between gears (potentially causing the controller to select unexpected gears).
- fixes an bug in which upshifts to gears above 5th were not always reflected in the current gear indicator (reported privately).
- adjusts the short term load average (used for shifting, etc.) to be 2.5 times slower than before. As well, the factor while braking is slower if the change in load is larger than in previous codes, and larger if the change in load is small (so that it still comes close to the actual load over time). The short term load average range is now 0 to 8000, rather than 0 to 4000 in previous codes. The default has changed to 1000 from 400. Users will notice that the short term load average is smoother than before with the same settings (which should give less gear hunting).
- changes the load value from an unsigned integer ( 0-65535) to a signed integer (-32768 to 32677) for compatibility with MS-II/III TPS values (when TPS over CAN is used as the load factor). The load can run up to 3267.7 kPa/%, which is obviously still way more than is needed. The TPS is limited to 0 to 100% internally, so if it gets a value outside this range it will adjust it.
I have tested the gear shifting, PWM TCC and hysteresis in this code, but obviously have much more testing to do. Use with caution.
The 2.00x series of code is coming to a close, and once we have the bugs worked out of the current code it will be released as 2.100 (hopefully soon). Further refinements will come in the subsequent series of 4.00x code.
<edit>This is a re-post of an announcement made during the period lost by the recent restoration of a backup from Feb.22/2011. During that time v2.100 code was released.</edit>
I have put new release 2.101 code here: http://www.msgpio.com/manuals/mshift/V2code.html This code fixes a bug in the 2.100 code that made the LEDs misbehave in 7th and 8th gears. There were no other changes.
I have also put new 4.000 beta code here: http://www.msgpio.com/manuals/mshift/V4code.html
This code has:
- many architectural changes to make the code more efficient. For example, while the previous code had each shift hard coded separately (for clarity for those just learning to code and looking to go directly to a particular action), the new code performs all of the shifts with the same bit of code in a function. This will also make debugging easier, and future additions simpler and less error-prone.
- the 7th/8th LED fix above.
- TCC individual upshift lock/unlock behavior is user configurable (under 'TCC Settings/TCC Upshift Settings'). You can set it to stay locked if it is already locked, or force it to unlock.
- a rewrite of the PNR to Drive code, with a delay factor ('PNR to Drive Delay' under 'Shift Factors') to allow the switch manifold to settle down (default is 0.85 seconds). I'm not sure how effective these will be, as I was unable to reproduce the problems some users reported.
- the user can set the shift pressure for each upshift and downshift for the output 3 shift solenoid separately from the on/off pressure. If the value is set to zero, Output3 acts like the other solenoids. However, if the value for a particular shift is non-zero (under 'Shift Output Patterns/Output 3 Upshift Behavior' and 'Shift Output Patterns/Output 3 Downshift Behavior''), the solenoid PWM% (and thus the pressure) during the shift is set to the non-zero percentage. The different pressure starts before the pressure delay, and lasts until after the shift completion delay. This may be useful for 4L60 users who wish to use a reduce line pressure on solC during the 3-2 shift. Note that PWM must be enabled on Output3 (under 'General Settings/Solenoid PWM Setup') to use this function.
- The user can set a specific maximum line pressure (PWM%) setting for each individual up and down shift under 'General Settings/Shift Line Pressure Settings'. This setting applies to the line pressure, and affects all of the shift solenoids (unlike the Output3 setting mentioned above) by changing the hydraulic pressure they control. Older code had a single setting for all shifts, up or down.
- a fix for the line pressure reporting during the pressure adjustment delay.
I have briefly tested and confirmed the above new functions, as well as the auto and manual shifting, TCC PWM%, etc. but only with the default code settings (or the minimum necessary changes to test each function). Use great caution if trying this code anywhere but on a bench.
The fix to the wait function (to make it timer based) is not in this code, but will be added to the 4.001 code due out soon.
I am working on a user guide, it will be here once I have made some progress: http://www.msgpio.com/manuals/mshift/V4tune.html
I have put the latest 2.102 code here: http://www.msgpio.com/manuals/mshift/V2code.html
This code fixes a bug in which the MAP kPa was limited over CAN to be from 0 to 100 kPa. This was inadvertently done when limiting the TPS over CAN (to fix the problem where if the TPS fell under 0%, the load value underflowed in the unsigned int and became very, very large).
Nothing else was changed.
The v4 code presumably has this same limited MAP issue, and the next beta version will get the same fix as 2.102 when it is released in a few days.
Thanks to both of you who pointed this issue out to me privately.
I have put up new 4.001 beta code here: http://www.msgpio.com/manuals/mshift/V4code.html
This code backs out the changes to the shift from PNR to Drive (which, upon reflection were ill-conceived - the controller responded well when everything was right, but the changes were making things much worse if there were uncertainties in the inputs).
Instead the new 4.001 code increases the digital switch debounce factor from 80 to 400. In order to allow this, the debounce variable was changed from an unsigned char to an unsigned int (requiring the corresponding INI file). Users should update this value to at least 400 if they load an MSQ from an older code. Much larger values (up to 65535) can be used to tame uncertain values while shifting the manual lever position.
This code also implements the greatly improved wait function, which now appears to work properly with the wait values I have tried.
I have quite a bit more testing to do on this code, though so use only with great caution.