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.

CC2640R2F: CC2640R2F pin not going low in HWI ISR

Part Number: CC2640R2F

Inside the ISR of an HWI, i am trying to make the output pin high and low but the pin is not going high. it is always staying low. it works only when i put the breakpoint on the instruction setting the pin low. what can be the reason?please help.

PIN_Config kbi_pin_table[] =
{
     IOID_9 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_HIGH |PIN_PUSHPULL | PIN_DRVSTR_MAX, /* LED initially off */
     PIN_TERMINATE /* Terminate list */
};
void spi_createTask(void)
{
  //  Display_init();
    GPIO_init();
    SPI_init();

    Task_Params taskParams;

    // Configure task
    Task_Params_init(&taskParams);
    taskParams.stack = appTaskStack;
    taskParams.stackSize = SPI_TASK_STACK_SIZE;
    taskParams.priority = SPI_TASK_PRIORITY;


    Task_construct(&SPI_task, SPI_taskFunction, &taskParams, NULL);
}

void SPI_taskFunction(UArg arg0, UArg arg1)
{
    /* Local variables. Variables here go onto task stack!! */
    /* Run one-time code when task starts */

    SPI_Handle      masterSpi;
    SPI_Params      spiParams;
    uint32_t        i;



        hPin_wakeup = PIN_open(&pinState_wakeup, wakeup_pin);

        // Register ISR
        PIN_registerIntCb(hPin_wakeup, buttonHwiFxn);


        standbysem = Semaphore_create(0, NULL, Error_IGNORE);
            if (standbysem == NULL) {
                while (1);
            }
    while(1)
    {


        //KBI high
        hPin_kbi = PIN_open(&pinState_kbi, kbi_pin_table);
       PIN_setOutputValue(hPin_kbi, IOID_9, 1);


        /* Open SPI as master (default) */
        Semaphore_pend(standbysem, BIOS_WAIT_FOREVER);
        if(wakeup_flg);
        {

          
        while(PIN_getInputValue(IOID_18) == 1);


        wakeup_flg=0;

        SPI_Params_init(&spiParams);
        spiParams.frameFormat = SPI_POL0_PHA0;
        spiParams.bitRate = 1000000 ;
        spiParams.dataSize = 16;
        spiParams.mode = SPI_MASTER;

        masterSpi = SPI_open(Board_SPI_MASTER, &spiParams);
        if (masterSpi == NULL) {
          //  Display_printf(display, 0, 0, "Error initializing master SPI\n");
            while(1);
        }
        else {
          //  Display_printf(display, 0, 0, "Master SPI initialized\n");

        }

        for (i=0; i < SPI_MSG_LENGTH; i++)
                  memmove((void *)masterTxBuffer+i, (const void *)masterTxBuffer1+i, 1);
        
                  vfnSpiPerformXfers(masterSpi);
            

        SPI_close(masterSpi);
 
        }


    }
}