I am using an LPC213x with Keil UV3 (just installed mkd3.04 update).
If I try to receive any data greater than 0x7f, I immediately get an overrun error. This question was asked back in June but was never answered. The update did nothing to fix this.
You can duplicate this by running any Keil example project (like DHRY) and type "S1IN = 0x80". You will immediately get an overrun error.
To get around this, I must disable the RxLineStatus interrupt, else I will always get the interrupt.
Thanks, Brian
Have you set correct word length, and correct parity setting? If not, the sender may generate too many bits of data before the stop bit.
Addendum: Too much mismatch of baudrate can also push the last bit into the stop bit position.
I am using 9600 Baud, 1 Stop bit, No Parity.
I have tried 2 stop bits and various slower baud rates, but nothing helps.
We have a previous project in the field which uses the same LPC213x and uses the Uart for communications (and it receives values greater than 0x7f) and it doesn't create problems on real hardware, but still generates this error in simulator mode.
I get parity errors after every character when using the simulator, but all is fine on the target hardware
Are you sure that the PC's COM port is correctly configured when using the Simulator?
The PC's COM port must be configured with the Mode command - it is not configured by the firmware being simulated! http://www.keil.com/support/man/docs/uv3/uv3_cm_mode.htm
Yes, I have the PC's com port properly configured as follows:
// 9600 bps, no parity, 8 data & 1 stop bit MODE COM2 9600, 0, 8, 1; // ASC0 output & input is done with COM2: ASSIGN COM2 <S0IN >S0OUT;
Keil has created a fix for this and the link is shown below.
http://www.keil.com/support/docs/3311.htm
Note: Resolution text shows wrong directory...You must add this new DARMP.dll to the c:\Keil\Arm\Bin directory.
Thank you to all respondants and to Keil, Brian