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

Timer and Multirole for PCA20006

Hello, I have implemented the code below for my project based on switching central and peripheral role in S130. The code works fine on the Devkit PCA10028 but on porting it to PCA20006 I noticed some bugs in the final steps.

  • Without line 195 and 271 to 310 everything seems to work well on the Beacon, the LED is toggling in the right frequency. However after some time the frequency seems to roughly double. I cannot solidly quantify this observation.
  • Adding the above lines, the beacon does not switch on any LED at all. Only in debug mode the LEDs are switched on and the timer handler is entered. It seems there is a problem with my timer interrupt handling, but I dont know what.
  • I Am unsure if this code will be capable of handling 120 interacting nodes (well, mostly only up to 20 should be in close proximity)

Does anybody have an idea what could be my problem when porting to PCA20006? I am also grateful for any ideas to improve the code.

edit1: attached file instead of code: Corrected line numbers to reflect recent changes, as I corrected functionality. edit2: For completness I attached to whole (ecplise) project folder. Putting it into /central_and_peripheral/experimental/ should work. The makefile is currently set for PCA20006.

edit2: attached updated code

edit3: final code

Parents
  • Ok. Misread this post, and read the register before enabling the SD. With enabled SD and cleared register in last run, I get as reset reason 100 = Reset from AIRCR.SYSRESETREQ detected

    I have not figured out yet, what this means.

    So apparently my device is getting a softreset. I just cannot figure out, where it originates.

    • It only appears if I call scan_init
    • The reset frequency seems linked to the scan interval
    • It is not linked to something in either on_ble_event or main_timer_event_handler (commented everything out)

    Can you reproduce the error.

Reply
  • Ok. Misread this post, and read the register before enabling the SD. With enabled SD and cleared register in last run, I get as reset reason 100 = Reset from AIRCR.SYSRESETREQ detected

    I have not figured out yet, what this means.

    So apparently my device is getting a softreset. I just cannot figure out, where it originates.

    • It only appears if I call scan_init
    • The reset frequency seems linked to the scan interval
    • It is not linked to something in either on_ble_event or main_timer_event_handler (commented everything out)

    Can you reproduce the error.

Children
No Data
Related