HI all,
I'm working on an interrupt driven SSI (SPI) driver for a TM4C123GH6PM MCU and am seeing some strange behavior regarding interrupt generation. At first, I wanted to trigger an interrupt on transmit complete, which is the flag SSI_TXEOT (value of 0x40). The datasheet for the TM4C123 says that this interrupt should be available, but when looking closer at the masked interrupt status register (SSIMIS), we only have access to the first 3 bits, and it seems the third bit shares an interrupt condition with FIFO half full or less or TX complete, based on the EOT bit. What is the EOT bit in this case? I can't seem to find this anywhere.
Secondly, when I enabled interrupts for the FIFO Half Full or Less condition (SSI_TXFF of value 0x08), my interrupt handler fires immediately and the main while loop doesn't ever run. Maybe the language isn't clear, but to me, if the interrupt fires on transmit fifo half full or less, then as soon as we enable this interrupt, it's going to constantly fire because the TX fifo is always half full or less because we haven't had the chance top put anything in it yet. Is this a correct assumption?
To recap, if I enable interrupts with the flag SSI_TXEOT, no interrupts fire, which I guess makes sense because the SSIMIS only allows masks up to bit 3. But then if I enable interrupts with the flag SSI_TXFF, the interrupt handler immediately fires and the main function doesn't get a chance to run because the interrupt handler is constantly firing, so the main task is basically getting starved.
I appreciate any clarification, thank you!
Kyle Garland