This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

PPI Timer2 weird behavior on Bluetooth connect

Hello!

We're using PPI to connect one pin to clear and capture events on Timer2. On pin low-to-high we're clearing the timer and on pin high-to-low, we're capturing the timer. We have S110 enables and inited on PCA10001 board.

The application works great until we connect the PCA10001 to the PCA10000 (via master control panel) at which moment the values from the timer become erratic and random. It stays the same after Bluetooth disconnect.

Parents
  • There should be a GPIOTE involved in the usecase you mentioned. GPIOTE will convert the pin state change into events, which should be connected to PPI to convert into a timer task. After configuration there is no software involved in clearing and capturing the timer value. It is done by hardware so S110 connections and disconecctions shall not effect this.

    1)Did you use different GPIOTE and PPI channels to configure the pin state change? 2) how are you reading these values, is your reading interrupt based?If your processing time for your interrupt is less than 100us, you could set the interrupt priority to APP_HIGH to see if that helps. 3)If pin state change is happening faster than the softdevice is allowing the app to read it then it is possible that after connection (softdevice blocks cpu for 1ms-6ms depending on packet length) then you are missing few read cycles of timer capture register.

  • softdevice does not change anything for PPI channels 0 -13. But like RK said

    Only one GPIOTE channel can be assigned to one physical pin. Failing to do so may result in unpredictable behavior.
    

    I cannot think of any reason why assigning PPI channel when you get a connected event changed the behavior here. It seems that configuring different GPIOTE channels with same pin gives different behaviour depending on the state of the pin when configured, this is what unpredictable means. I strongly recommend you not to build your logic on this behavior.

Reply
  • softdevice does not change anything for PPI channels 0 -13. But like RK said

    Only one GPIOTE channel can be assigned to one physical pin. Failing to do so may result in unpredictable behavior.
    

    I cannot think of any reason why assigning PPI channel when you get a connected event changed the behavior here. It seems that configuring different GPIOTE channels with same pin gives different behaviour depending on the state of the pin when configured, this is what unpredictable means. I strongly recommend you not to build your logic on this behavior.

Children
No Data
Related