We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Is there a Calibration or Configuration Tool that allows you to monitor and modify variables in an software program at run time. Basically, if you add a small piece of code to your embedded application such as CAN Calibration Protocol (CCP) or XCP you could monitor and modify the values of variables at run time. This is how the automotive world calibrates their Electronic Control Units. This is very powerful because you don't have to create a customed interface inside the embedded controller for every different application. The customization is done on the PC side from the information generated by the C Compiler. Is there a similar tool for the embedded world aside from the calibration tools for the automotive world.
You can use ISD51 for this. Plus, you can get full debugging capability as well. Take a look at http://www.keil.com/c51/isd51.htm for more information. Jon
Hi, Any ICE should be ble to do this. Unlike monotors ICe work in hard real time and are non-intrusive. We do a lot of automotive work with them.
Thanks for you info on ISD51. It looks interesting for debugging purposes if I understand correctly. However, what I was looking for is a way to calibrate an already debugged program. If you use software breakpoints, the application slows down by x100 times. If you need to deliver every embedded controller with hardware breakpoints, such as an ICE, it is not practical. The beauty of programs such as CAN Calibration Protocol (CCP) is that the application is running at full speed with access to the data. With CCP you are not debugging the program but rather calibrating tables or variables similar to ISD51 but without stopping the micro or the application. CCP is useful when the calibration is done by the customer and not the developer.
I think those of you recommending the use of the ICE for the calibration process are missing the point. And I think Leo is not seeing how simple this really can be. Let me describe it as I see it. Leo wants a real time capability to enter calibration constants into the product when it is already out in the field in the customer hands. The way I usually solve this problem is to add a serial EEPROM like 93C46 to the hardware design to store the calibration constants in. The device software reads the constants out of EEPROM at power up and puts working copies in RAM for quick reference. Next I provide a set of interrupt driven UART routines that transfer data to and from circular buffers in RAM. Then I add a piece of code as a subroutine, which is coded as a state machine. This is designed to be called periodically from the main program loop. The state machine is designed to poll for data in the UART receive queue and decode command packets. There can be commands to write parameters and calibration constants to internal RAM, commands to read them back out and finally a command that can commit the RAM copy of the parameters to storage in the EEPROM for permanent keeping. ------------------ So rather than thinking of your requirement as working same as an ICE, provide the equivalent functionality right in your application. The UART ISR overhead is very small. And the calling of the mainline code to the command parsing state machine only takes about a half of a percent of processor bandwidth when there are no commands arriving from the external computer. Mike Karas Then I make a small piece of code that acts like a state machine that cab
I did scales once and we glued a small serial eeprom to the loadcell, so that the calibration was right if either the loadcell or the board was replaced. Erik