XOn/XOff SCI1

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

XOn/XOff SCI1

3,424 Views
BoloMestre
Contributor I
How I make to inform a device hardwired in the SCI1 that already I caught the sent byte so that this device can send me the next byte?
Labels (1)
0 Kudos
4 Replies

631 Views
bigmac
Specialist III
Hello BoloMestre,
 
SCI handshaking is not usually applied on a character-by-character basis, but is generally used to stop and re-start a continuous data stream.  Typically the received chararacters will be placed in a FIFO (circular) buffer, generally under  interrupt control.  Hence, the receive buffer needs to be monitored, so that when it is nearly full the stream can be stopped, and re-started again when the buffer becomes nearly empty.
 
The handshaking originates from the receiving SCI and is sent back to the data source, and may use either a "hardware" method (control of CTS or DTR signal), or a "software" method (sending Xon or Xoff control characters).  When sending a Xoff character to stop the data stream, there could be a delay of several characters before it takes effect, so this should occur before the buffer is completely full.  Similarly, the Xon character should be sent before the receive buffer completely empties.
 
The "hardware" method is generally preferred, if the signal is available, because it will be more responsive.  The choice of CTS or DTR signal would need to match the sending end - the chosen signal is made inactive to stop the stream, and active to re-start the stream.
 
Regards,
Mac
 
 
 
0 Kudos

631 Views
BoloMestre
Contributor I

Hi BigMac,

When I am for receiving the data is set the bit OverRun, collision of data, therefore my interest for the HandShake. I tried to place an interruption but this never is not had access. Perhaps of this form I obtain to all catch the sent frame, since I do not possess no wire leaving the device, only RX and TX.

I am using CW 3,1, with a board AXMAN EVB9S12NE64.

 

0 Kudos

631 Views
imajeff
Contributor III
A common solution is to slow down the baud rate.

I'm curious what kind of hardware you are communicating with having the problem... The NE64 and what else?
0 Kudos

631 Views
rocco
Senior Contributor II
Hi, BoloMestre:

If you are getting Overrun errors, then the problem is with the firmware. If the firmware isn't responding quick enough to keep up with the data coming in, how could it be quick enough to send an XOFF in time?

With a good, interrupt driven SCI driver, you should never get overrun errors. I run packets continuously at 500 Kbaud, both in and out, on a meager HC08, with no overruns. In my case, I send and receive the data from the interrupt service routine, buffer it, and then process it in the background.

Let us know if you need help with your SCI routines.
0 Kudos