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.

does the camera interrupt handler need to be in a task in the cc3200?

I have a camera app running that uses Free Rtos and the camera setup and interrupt handler are inside a task and that works (I see the interrupts when the FIFO is full) but now I'm working on another program that doesn't use a RTOS and the setup is the same but I never get the interrupt, does the handler need to be in a task?

  • There is no such dependency. It should work.

    Can you post pseudo code with Canera/interrupt APIs that you are using to enable/register interrupts

  • here is my setup code:

    static void CamControllerInit()  // from camera_app
    {
        
        MAP_PRCMPeripheralClkEnable(PRCM_CAMERA, PRCM_RUN_MODE_CLK);
        MAP_PRCMPeripheralReset(PRCM_CAMERA);

        // Configure Camera clock from ARCM
        HWREG(0x44025000) = 0x0101;
        //reset camera hardware
        MAP_CameraReset(CAMERA_BASE);
        //setup clk polarity
        MAP_CameraParamsConfig(CAMERA_BASE, CAM_HS_POL_HI,CAM_VS_POL_HI,
                           CAM_NOBT_SYNCHRO | CAM_IF_SYNCHRO | CAM_BT_CORRECT_EN |  CAM_PCLK_FALL_EDGE);

      //set the pixel clk freq
        MAP_CameraXClkConfig(CAMERA_BASE, 60000000,2000000);
       //set the fifo threshold
       MAP_CameraThresholdSet(CAMERA_BASE, 32);
       
       //register int handler
       MAP_CameraIntRegister(CAMERA_BASE, CameraIntHandler);
       //tell it to generate interrupt on fifo has hit threshold
       MAP_CameraIntEnable(CAMERA_BASE, CAM_INT_FIFO_FULL );
       
       //turn on dma
       MAP_CameraDMAEnable(CAMERA_BASE);
       MAP_CameraCaptureStart(CAMERA_BASE);  
    }

  • Hi Seth,

    My apologies for delayed response. Code looks ok.

    Can you confirm that boardinit function is called in your main function

    static void BoardInit(void)
    {
    // In case of TI-RTOS vector table is initialize by OS itself
    #ifndef USE_TIRTOS
    //
    // Set vector table base
    //
    #if defined(ccs) || defined(gcc)
    MAP_IntVTableBaseSet((unsigned long)&g_pfnVectors[0]);
    #endif
    #if defined(ewarm)
    MAP_IntVTableBaseSet((unsigned long)&__vector_table);
    #endif
    #endif
    //
    // Enable Processor
    //
    MAP_IntMasterEnable();
    MAP_IntEnable(FAULT_SYSTICK);

    PRCMCC3200MCUInit();
    }

    I am curious to know whether interrupt vector table is set.

    Also Let me check at our end and see if anything is missing. 

  • Also please confirm that you are linking to NON_OS\simplelink.a and not the OS version. I assume other relevant changes are also taken care in your application