Following set: Two identical PCBs (my hardware design using the LPC932), one with the "real" MCU, other with connector adaptor to EPM900 board. My software runs smooth on the emulator. I always send 24 bytes via COM5 (virtual COM port of FTDI232 USB-to-RS232 chip). The MCU processes the 24 bytes, executes a command, some routines and sends 24 bytes back to PC. The 24 bytes are a certain telegram with a two byte header and a checksum at the end. So far, so good. As I said, it runs smooth on the emu. But when I flash the compiled hex file into the LPC932 on the other board and connect this board with USB (COM5), I can send the 24 bytes to COM5, but I receive an error code generated by my firmware telling me the header is wrong. I found out that the last, the 24th byte, is somehow coming to the first position of the serial input buffer. Example: PC sends: AA 55 00 FF .... FF 60 hardware should have: AA 55 00 FF ... FF 60 in the 24 byte input buffer, but it has: 60 AA 55 00 FF ... FF No idea. Code is fine, I worked it out a thousand time. The whole buffer seems to be shifted. I repeat, this runs correct on the emu, which holds the same MCU. The worst fact is, that sometimes the code in the "real" MCU runs correctly after being connected to supply voltage (USB), sometimes it doesn't. So the code must be ok. Any clue? Thanks for any help.
I always send 24 bytes via COM5 (virtual COM port of FTDI232 USB-to-RS232 chip). Check this piece. Problem might be in there (you know, win$lows, new drivers, VC++ "features" etc). I guess, I mentioned above that I looked at the signal on RxD input with an oscilloscope (single shot). There was and is no leading zero byte transmitted. When a new interrupt from UART occurs, which should only be initiated by a serial transfer in or out (in this case in) and I can see, with the osci, the first byte is AA, so the SBUF must be overwritten with that byte and the interrupt occured will call the isr to read that byte. Let's end this here, the workaround is functioning. Thanks for all help.