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.

TIRSLK-EVM-SW: anything faster than HwiP_setFunc

Part Number: TIRSLK-EVM-SW

I'm having issues with the tacho in the RSLK generating heaps of interrupts when the motor was spinning at full speed (main problem is slowing down my wifi connection through the cc3120) . I've partially solved it by using HwiP_setFunc to install a faster ISR. (overriding the CaptureMSP432_hwiIntFunction).

Is it possible/acceptable to install anything even lower level? I'm only incrementing a counter and storing the capture time (not using any ti-rtos routines).

I noticed in the stack in the HWI calls Hwi_dispatchC. Is it possible to override that just for these timer capture interrupts?

  • Hi,

    We will look into it and get back to you ASAP. Please bear with us.

    Thanks,

    PM

  • Hi PM,

    I've found that there is a interrupt creation flag called "useDispatcher" [struct ti_sysbios_family_arm_m3_Hwi_Params] which when I turn off, it seems to work fine and bypasses the dispatcher (by putting my functions directly into the vector table). 

    However I needed to override ti_sysbios_hal_Hwi_create to actually use it because...

    At the high level your api uses Hwi_Params (ti_sysbios_hal_Hwi_Params) that does not contain useDispatcher, but at the lower level (ti_sysbios_family_arm_m3_Hwi_create) is uses ti_sysbios_family_arm_m3_Hwi_Params that does contain the flag. 

    As I had to override a ti-rtos function, Is this an recommended / acceptable solution? Maybe there is a better way?

  • The HAL Hwi module is for general use and the APIs there map to any underlying device.

    The device specific Hwi module is provided as a delegate to the HAL Hwi module but also extends the functionality of the hal Hwi module.

    It is perfectly acceptable to use the ti.sysbios.family.arm.m3.Hwi module directly.

    To bypass the common interrupt dispatcher for performance reasons, the m3.Hwi module provides a "Zero Latency" interrupt mechanism.

    By setting the priority of the interrupt to zero, the Zero Latency mechanism is employed, bypassing the interrupt dispatcher.

    BIOS NEVER disables the zero latency interrupts.

    As you seem to have figured out, non-dispatched interrupts are NOT ALLOWED TO INVOKE BIOS APIs.

    As long as your ISR is not interacting with BIOS, it should work as expected.

    Alan

**Attention** This is a public forum