Hi,
I fixed this bug three years ago - thus don't remember exactly where it
was. The reason is related to incorrect block switching A->B->C. Please
compare the code segment from InitSport() function you have with the one
I send below.
void InitSPORT()
{
TCB_Block_C[0] = (int) TCB_Block_A + 3 - OFFSET + PCI ;
TCB_Block_A[3] = (unsigned int) Block_A - OFFSET; //adress pointer
to next TCB cpsp
//Proceed from Block B to Block A
TCB_Block_A[0] = (int) TCB_Block_B + 3 - OFFSET + PCI ;
TCB_Block_B[3] = (unsigned int) Block_B - OFFSET;
//Proceed from Block C to Block B
TCB_Block_B[0] = (int) TCB_Block_C + 3 - OFFSET + PCI ;
TCB_Block_C[3] = (unsigned int) Block_C - OFFSET;
....
Good luck,
Maciej Kulesza