Прерывание по SPI, будет обработано, только при возникновении прерывания от SPI.. Поскольку флаг устанавливаетсся только если есть прерывание по SPI
if (S0SPINT &0x1)
В любом другом случае этого флага не будет!!!! По крайней мере, так должно быть, и так и есть в моем проекте.
И почему он у вас устанавливаетсявсегда непонятно...
Возможно вы его не скидываете
void SPI_Exception(void)
{
uint8 temp, temp1;
temp = S0SPSR;
if ((temp & 0x80) != 0)
{
temp1 = S0SPDR;
OSMboxPost(SPIReviceMbox, (void *)temp1);
}
if ((temp & 0x10) != 0)
{
S0SPCR = 0xa0 | SPI_MOD;
}
S0SPINT = 0x01; //Вот тут мы его скидываем!!!!!
}