This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CCS/TMS570LS1224: Interruptions, sciNotification is never called

Part Number: TMS570LS1224
Other Parts Discussed in Thread: HALCOGEN

Tool/software: Code Composer Studio

Hi guys,

I need your help regarding a SCI interruptions when some data is received (RX).

I have set up all the check boxes in Halcogen and generated a code. Actually it works, except that my sciNotification is not called at all.

sciHighLevelInterrupt function is called, but sciNotification is not because g_sciTransfer_t[0U].rx_length is zero all the time:

void sciHighLevelInterrupt(void)
{
    uint32 vec = sciREG->INTVECT0;
    uint8 byte;

    switch (vec)
    {
...
    case 11U:
        /* receive */
         byte = (uint8)(sciREG->RD & 0x000000FFU);    // <<<<<< this value is correct

            if (g_sciTransfer_t[0U].rx_length > 0U)   //   <<<<<<< false all the time for some reason, that is why sciNotification is not called.
            {
                *g_sciTransfer_t[0U].rx_data = byte;
                /*SAFETYMCUSW 567 S MR:17.1,17.4 <APPROVED> "Pointer increment needed" */
				g_sciTransfer_t[0U].rx_data++;
                g_sciTransfer_t[0U].rx_length--;
                if (g_sciTransfer_t[0U].rx_length == 0U)
                {
                    sciNotification(sciREG, (uint32)SCI_RX_INT);
                }
            }
        break;
   }

What I want to achive: I need to read the incoming data in the "interrupt" function. I am using FreeRTOS with a lot of tasks and not all data are read from the SCI when I read it in separate task. That is why I need to use interruption for this case and do not miss anything.

Could you please advice what can be wrong? Do I need to implement another strategy to get all the data from the RX?

My test code (without FreeRTOS and other not important stuff) is the next:

int main(void)
{
/* USER CODE BEGIN (3) */
    sciInit();
    sciEnableNotification(sciREG, SCI_RX_INT);
    _enable_IRQ();

    while (1)
    {
    };
    /* USER CODE END */

    return 0;
}

My setting in halcogen: