This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Using two GPIOTE config to a single pin

In another thread entitled:

Change in GPIO to start/stop timer and fire interrupt

The following code is used:

  NRF_GPIOTE->CONFIG[0] = (GPIOTE_CONFIG_POLARITY_HiToLo << GPIOTE_CONFIG_POLARITY_Pos)
        | (myPin << GPIOTE_CONFIG_PSEL_Pos) // using GPIO 5 as input
        | (GPIOTE_CONFIG_MODE_Event << GPIOTE_CONFIG_MODE_Pos);

    //// Configure GPIOTE channel 1 as event that occurs when pin 5 changes from digital
    //// low to hi.
    NRF_GPIOTE->CONFIG[1] = (GPIOTE_CONFIG_POLARITY_LoToHi << GPIOTE_CONFIG_POLARITY_Pos)
        | (myPin<< GPIOTE_CONFIG_PSEL_Pos) // using GPIO 5 as input
        | (GPIOTE_CONFIG_MODE_Event << GPIOTE_CONFIG_MODE_Pos);

In the nRF51 RM, there is a statement: Each GPIOTE channel is associated with one physical GPIO pin through the CONFIG.PSEL field...

Is the above code breaking this rule? Are two configurations being mapped to a single pin?

Would the correct code be to look for a change, then check the PIN state in the ISR to determine whether it was HiToLo or LoToHi?

If so, what would be the recommended debounce approach?

Parents
  • but technically violates the one-pin-one-GPIOTE rule which does not, in the documentation, have an exception for EVENTs vs TASKS or you can use one GPIOTE and keep flipping it from up to down transitions, although you're almost bound to run into issues where you don't get through the interrupt handler in time to flip it and miss a transition, worse if some of your signals tend to bounce at the edge as some of mine do.

Reply
  • but technically violates the one-pin-one-GPIOTE rule which does not, in the documentation, have an exception for EVENTs vs TASKS or you can use one GPIOTE and keep flipping it from up to down transitions, although you're almost bound to run into issues where you don't get through the interrupt handler in time to flip it and miss a transition, worse if some of your signals tend to bounce at the edge as some of mine do.

Children
No Data
Related