Setting QDEC sampleper value via driver API.

Hi!
I am struggling with figuring out how to properly set the sampling frequency for the qdec device. I noticed that making changes directly to the members of config struct of zephyr/drivers/sensor/qdec_nrfx/qdec_nrfx.c seems to do the trick, but I would rather do the changes via device API. 
I noticed that the nrfx_qdec.c driver seem to use necessary API functions declared in nrf_qdec.h. However the function parameters in nrf_qdec_sampleper_set(). Have wrong types compared with nrfx driver. Is there a standardized way of changing the sampling frequency of the qdec device?

Thanks in advance.

Parents Reply Children
  • Again thank you for your reply.
    The issue I ran into now is the fact that nrfx_qdec.c expects me to provide a nrfx_qdec_event_handler_t handler. I have written simple switch case handler but I doesn't seem to be invoked. When I flash my board i receive following error message.

    [00:00:00.191,406] <err> os: ***** Reserved Exception ( -16) *****
    [00:00:00.191,436] <err> os: r0/a1:  0x200138f0  r1/a2:  0x000105b5  r2/a3:  0x000455f7
    [00:00:00.191,436] <err> os: r3/a4:  0x00010619 r12/ip:  0x00010619 r14/lr:  0x00010619
    [00:00:00.191,467] <err> os:  xpsr:  0x00000000
    [00:00:00.191,467] <err> os: Faulting instruction address (r15/pc): 0x00010619
    [00:00:00.191,467] <err> os: >>> ZEPHYR FATAL ERROR 0: CPU exception on CPU 0
    [00:00:00.191,497] <err> os: Current thread: 0x200025d0 (main)
    [00:00:00.738,433] <err> fatal_error: Resetting system

    -16 means a spurious interrupt error. I assume the error means that even tho the board can detect an interrupt has been raised it doesn't understand its source and neither does it understand which handler to run after detecting said interrupt.

    Could you please shed some light on how to register an interrupt to a specific qdec device and how to assign correct handler to it?

    Best regards.
    Lukasz

  • Hi Lukasz

    Setting up interrupts in Zephyr is a bit different than in the old days, and when using nrfx drivers some manual setup is needed. 

    One of my colleagues made an example showing how to use the nrfx_rtc driver, and he includes the interrupt setup here.

    It should be possible to do it in a similar way for the nrfx_qspi driver. 

    Best regards
    Torbjørn 

Related