MON166: MONITOR STOPS WORKING AFTER EXECUTING CODE
Information in this article applies to:
When using MON166 and executing code, the monitor stops responding after starting the target program.
This problem may be caused by the following:
Overwriting the interrupt vectors used by the monitor.
If you use the Monitor in Bootstrap mode, you must reserve the interrupt vectors and the monitor code area. In most cases you have to RESERVE at least the serial interrupt 0 and the NMI trap with L166. Under µVision2 you need to enter this information under Options - L166 Misc - Reserve:
Overwriting the monitor code or data areas.
You should also reserve the monitor code and data area. Please check the configuration of your monitor to figure out which areas you need to reserve. For most boards you will find this information under µVision2 in the dialog Options - Debug - Monitor Settings - Description.
Changing the port 3 direction register (used by the serial port).
I/O port 3 is used by the monitor for the serial port (typically) but may also be used in your application. Therefore, you need to make sure that the register P3 and DP3 are configured as follows:
P3 = 0x0400; // P3.10 must be 'high' DP3 = 0x0400; // P3.10 must be 'output'
The application causes a Class A or Class B Trap.
Class A or Class B traps have a higher priority than the monitor's UART interrupt. Because of that, the monitor cannot get control over the CPU.
Even setting a breakpoint in a trap handler function and debugging this function will not work reliable because the monitor needs to disable interrupts while it is active. Since Class A and Class B traps cannot be disabled the monitor will run into recursivity problems and will show wrong results / behavior.
The following Discussion Forum threads may provide information related to this topic.
Last Reviewed: Tuesday, November 23, 2010
of your data.