Re: Latest Code Updates
Posted: Wed Feb 27, 2013 10:13 am
All,
I have put the latest 4.112 beta code here:
http://www.msgpio.com/manuals/mshift/V41code.html
This code has one new user settings over the 4.111 code, and has a number of improvements:
- this code exposes a new setting under 'General Settings -> Rev Limits -> Force Auto Mode' that has been in the code for a while but I neglected to put it in the INI. This allows the user to set the circumstances when auto mode is selected from manual mode without user intervention.
- the overall code size has been reduced about 10% (with an even greater increase in speed) by more efficient use of functions, arrays, pointers, and conditional loops. For example, we moved the lever determination code to functions which were then considerably simplified with for() loops. This required a change Input1-4 related variables to Input1-4[] arrays, and some jiggling in their memory locations was required (which required changes in the INI too).
- fixes a bug in manual lever code in which certain voltage values were not recognized, and the user had to set an offsetted value for the lever to be determined correctly.
- completely rewritten user spare port 1/2 logic in a function with arrays, etc., and rearranged related parameters in inpram/INI (as with the gear lever code above). This makes the code smaller and simpler, and makes it easier to add other spare ports in the future, if this is desirable.
- adds 'equal to' to all the conditions (not just the gear) in the spare port logic.
- fixes a minor bug in output4 shift solenoid code.
- adds a limit to make sure pressure control duty cycle is not less than lowest 16x9 pressure control duty cycle of all the table values regardless of rounding/truncating or voltage/temperature adjustments. At high PC frequencies, and/or extreme volts/temps the value could have inadvertently become much lower than intended, and this could possibly (though unlikely) result in line pressures too low for the trans to operate correctly. With this code, that won't happen.
- fixed the metric 4WD odometer calculation bug (4WD correction wasn't being done at all - the 4WD speedo adjustment value wasn't being applied).
- fixes a minor bug in slip calculation (an input value was not being parsed correctly).
- adds DEBUG setting to INI with two input variables under 'Tools -> Debugging Input Variables' (#set DEBUG to display). This setting has no function in the beta code, it was used for development only (but you can't hurt anything by enabling it, either...).
With this code, all the 'low hanging fruit' of efficiency improvements have been picked. These have made the code faster, smaller, and easier to debug and develop; but also more abstract, and harder to understand and explain the flow. Future improvements will be more hard-won. We will keep working on efficiency improvements, of course.
Many thanks to those that contributed with ideas and bug reports (publicly or privately)!
This code has had some testing, but anyone should use it with great caution. In particular, the lever and spare port functions have had a lot of changes (these are the biggest architectural changes in the code since the move to 4.xxx code) so please report any unexpected behavior in a new thread. There may also be some residual problems in the INI (though I have tested and sorted all the ones I could find).
Lance.
I have put the latest 4.112 beta code here:
http://www.msgpio.com/manuals/mshift/V41code.html
This code has one new user settings over the 4.111 code, and has a number of improvements:
- this code exposes a new setting under 'General Settings -> Rev Limits -> Force Auto Mode' that has been in the code for a while but I neglected to put it in the INI. This allows the user to set the circumstances when auto mode is selected from manual mode without user intervention.
- the overall code size has been reduced about 10% (with an even greater increase in speed) by more efficient use of functions, arrays, pointers, and conditional loops. For example, we moved the lever determination code to functions which were then considerably simplified with for() loops. This required a change Input1-4 related variables to Input1-4[] arrays, and some jiggling in their memory locations was required (which required changes in the INI too).
- fixes a bug in manual lever code in which certain voltage values were not recognized, and the user had to set an offsetted value for the lever to be determined correctly.
- completely rewritten user spare port 1/2 logic in a function with arrays, etc., and rearranged related parameters in inpram/INI (as with the gear lever code above). This makes the code smaller and simpler, and makes it easier to add other spare ports in the future, if this is desirable.
- adds 'equal to' to all the conditions (not just the gear) in the spare port logic.
- fixes a minor bug in output4 shift solenoid code.
- adds a limit to make sure pressure control duty cycle is not less than lowest 16x9 pressure control duty cycle of all the table values regardless of rounding/truncating or voltage/temperature adjustments. At high PC frequencies, and/or extreme volts/temps the value could have inadvertently become much lower than intended, and this could possibly (though unlikely) result in line pressures too low for the trans to operate correctly. With this code, that won't happen.
- fixed the metric 4WD odometer calculation bug (4WD correction wasn't being done at all - the 4WD speedo adjustment value wasn't being applied).
- fixes a minor bug in slip calculation (an input value was not being parsed correctly).
- adds DEBUG setting to INI with two input variables under 'Tools -> Debugging Input Variables' (#set DEBUG to display). This setting has no function in the beta code, it was used for development only (but you can't hurt anything by enabling it, either...).
With this code, all the 'low hanging fruit' of efficiency improvements have been picked. These have made the code faster, smaller, and easier to debug and develop; but also more abstract, and harder to understand and explain the flow. Future improvements will be more hard-won. We will keep working on efficiency improvements, of course.
Many thanks to those that contributed with ideas and bug reports (publicly or privately)!
This code has had some testing, but anyone should use it with great caution. In particular, the lever and spare port functions have had a lot of changes (these are the biggest architectural changes in the code since the move to 4.xxx code) so please report any unexpected behavior in a new thread. There may also be some residual problems in the INI (though I have tested and sorted all the ones I could find).
Lance.