This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

How Can I Specify the timeout period for UART0 on the MCBSTR9

Hi everyone,

I should start by introducing the context of my application: I am currently working on a cryptosystem using the MCBSTR9. My evaluation board is connected to a modem through UART0, so I can react to specific modem interrupts (Data Carrier, Ring Indicator, etc...). At a first stage, I am required to sample voice and transmit/receive it via the modem.

My problem is the following: what if no data arrives? Going through the reference manual UM0216, I found out that I can enable the receive timeout interrupt for UART. However, I have been struggling since then with accomplishing an apparently casual functionality: How to set the timeout period for the receive timeout interrupt? especially that I may need to change it during runtime.

Here is why: My application would need to adjust to the modem (DCE) data rate, so if an increase in the data rate is perceived, I would need to adjust the UART baud rate in order to not suffer from any potential overrun. (Please Bear in mind that the microprocessor would be busy doing encryption,decryption,sampling,... in a round robin fashion -- I could have done it using interrupts instead, maybe I will - so I would not want to lose any data arriving from the modem before I can actually process it--.

Hope I was clear enough.

Thank you for your help

Parents
  • In your case, you are not processing a protocol with very, very short pauses as only separator between packets, so you don't need to care about break detection in the serial port.

    If you want to detect a modem that is no longer receiving any new data, it is enough to just update a time stamp whenever you receive any data. Then regularly poll that value and if too old, take some form of action.

    You may also consider looking at the hardware handshade signals or possibly XON/XOFF, i.e. how long your application has been blocked from sending more data.

Reply
  • In your case, you are not processing a protocol with very, very short pauses as only separator between packets, so you don't need to care about break detection in the serial port.

    If you want to detect a modem that is no longer receiving any new data, it is enough to just update a time stamp whenever you receive any data. Then regularly poll that value and if too old, take some form of action.

    You may also consider looking at the hardware handshade signals or possibly XON/XOFF, i.e. how long your application has been blocked from sending more data.

Children