Other Parts Discussed in Thread: C2000WARE
Tool/software:
Hi,
After having used the sci.h, etc. from the C2000ware for some years now, I looked more deeply into the registers as I experienced some unexpected behavior.
First of all, I was very surprised to find out that SCI_readCharNonBlocking filters away the SCIFFPE and the SCIFFFE bits, which I find necessary to take into consideration after receiving data.
Consequently, I built my own function that takes the entire SCIRXBUF with which I now get the unexpected behavior, which is as follows:
After triggering the SCI break-detect flag (e.g., by providing a low signal for too many bits), I run SCI_performSoftwareReset. Afterwards, SCI_getRxStatus returns zero, which is expected as I assume that the SCI is now running normally again. However, the first byte, which is being received at the correct baud rate afterwards (in my case 12.5 Mbaud), has the SCIFFFE-bit set. Every following similar byte is working completely fine. It is just the first one after a reset, which was initiated to reset the break-detect flag. This behavior can be reproduced reliably.
Is there an explanation for this behavior and an easy work around?
Kind Regards,
Leo