Hey Lisa,
What are you setting SPI1_RSER to signaling the interrupt? this is what I do:
SPI2_RSER = (1UL << SPI_RSER_RFDF_RE_SHIFT); // SPI2 interrupt when SPI2 RX FIFO is not empty
Maybe you are clearing too much with SPI1_MRC
Here is my isr stuff: Good luck :smileyhappy:
{ // Build 32-bits.
SpiMsW = (uint_16)(SPI2_POPR & 0xFFFF); // get SPI data MS_word.
SpiLsW = (uint_16)(SPI2_POPR & 0xFFFF); // get SPI data LS_word.
SPI2_MCR |= (1UL << SPI_MCR_CLR_RXF_SHIFT); // clear RXFIFO counter
SpiQlxWord = (((SpiMsW << 16) & 0xFFFF0000) | (SpiLsW & 0x00FFFF));
CardSpiState.rawSpiInWord = SpiQlxWord; // Save SPI word in private structure
_time_get_ticks(&ticks); // Get OS ticks
CardSpiState.timeIn = ticks.HW_TICKS; // Save ticks time stamp with SPI data
// post the lwevent to signal new SPI message is in
if (_lwevent_set(&lweventSPI,0x01) != MQX_OK)
_task_block(); // TODO: set a error condition instead if this.
SPI2_SR |= SPI_SR_RFDF_MASK | SPI_SR_RFOF_MASK ; //Clear SPI2 slave interrupt
SPI2_MCR |= (1UL << SPI_MCR_CLR_RXF_SHIFT); //Clear RXFIFO counter
}
Cheers,
Tom