A n 9 3 – Silicon Laboratories SI2493/57/34/15/04 User Manual
Page 302

A N 9 3
302
Rev. 1.3
// Insert code here to inform the host of the U70 interrupt
// or service it application dependent), e.g.
gU70Interrupt = 1;
}
// ***TXE INTERRUPT***
if ( TXEInterrupt )
{
// Clear the data sent counter
BytesSent = 0;
// The transmit FIFO is fourteen bytes deep, therefore upon TXE interrupts
// (two bytes or fewer in the transmit FIFO), it is possible to send up to
// twelve bytes to the part without risking overflow.
while ( ( gUARTToModemBufferSize > 0 ) && ( BytesSent < 12 ) )
{
writeModem( HIR0, pullByteForModem(), 0xFF );
BytesSent++;
}
// If there weren't enough data sent to clear the interrupt, clear it manually.
if ( BytesSent < 3 )
{
// Clear the TXE bit to clear the interrupt
ClearTXE;
control_update = 1;
}
}
// Check if the status register needs to be written
if ( control_update )
{
writeModem( HIR1, modem_control, 0xFF );
control_update = 0;
}
// Read register 1 to get current status
ReadModemStatus;
// Reset receiver counter for a subsequent RXF condition in this loop
BytesReceived = 0;
}
SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
EA = 1; // Enable global interrupt
}