SI2457-D-FS Silicon Laboratories Inc, SI2457-D-FS Datasheet - Page 301

no-image

SI2457-D-FS

Manufacturer Part Number
SI2457-D-FS
Description
IC ISOMODEM SYSTEM-SIDE 16SOIC
Manufacturer
Silicon Laboratories Inc
Datasheets

Specifications of SI2457-D-FS

Lead Free Status / Rohs Status
Lead free / RoHS Compliant
}
// This is the main ISR handler loop: stay in it until all interrupts are cleared
while ( RXFInterrupt || TXEInterrupt || TimerInterrupt || U70Interrupt )
{
// ***RXF INTERRUPT***
// Separate RXF interrupt from timer interrupt to reduce the number of HIR1 reads.
if ( RXFInterrupt )
{
}
// ***TIMER INTERRUPT***
// If there wasn't an RXF interrupt, but the receive FIFO isn't empty,
// the interrupt may have been caused by the receive timer interrupt.
// Note: If the host cannot empty its queue fast enough to keep up with the
// modem or if it is going to have a long period of time (>:U6F setting) where
// there won't be room in the FIFO, it would be better to completely disable
// the interrupt until the host has made room for more data. The timer interrupt
// can only be cleared by reading a byte from the FIFO; if there is no room
// in the FIFO, the interrupt will not be cleared. Alternatively, the routine
// could read a byte to clear the interrupt and then discard the data.
// MODULUS_MASK is BUFFERSIZE - 1
while ( TimerInterrupt && ( rxBufferSize < MODULUS_MASK ) )
{
}
// ***U70 INTERRUPT***
// Check for a "software" interrupt. "software" refers to any of the interrupts
// described in U70 in the modem datasheet.
// software interrupt is not masked. This is the reason for the bit shift.
if ( U70Interrupt )
{
// MODULUS_MASK is BUFFERSIZE - 1
while ( ( rxBufferSize < MODULUS_MASK ) && ( BytesReceived < 10 ) )
{
}
// Clear the RXF interrupt if fewer than 3 bytes were read. If more than 3 bytes
// were read from the FIFO the interrupt will be cleared automatically.
if (BytesReceived < 3)
{
}
// Read a byte
readModemByte;
BytesReceived++;
// Check the status to see if the FIFO is empty
ReadModemStatus;
// Mask the interrupt so that it doesn't cause another interrupt
// until the host software clears it with AT:I and tells us to
// turn it back on
ClearINTM;
control_update = 1;
readModemByte;
// Set a flag to know that RXF was serviced
rxf_processed = 1;
BytesReceived++;
ClearRXF;
control_update = 1;
// Clear RXF since we didn't empty the FIFO
Rev. 1.3
Only do this if the
AN93
301

Related parts for SI2457-D-FS