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

Intermittent device reset in modified ble_app_beacon example

I've been documenting this issue and asking questions here:

Intermittent device reset in modified ble_app_beacon example

Since I need to post a proprietary schematic, I made this private post to continue.

This project is a stripped down version of a product under development. It depends upon being able to change the contents of the advertising data whenever the board (a sensor) detects a new state.  The code as shown generally works but eventually the device resets. This could happen after running for a few minutes or a few days or anywhere in between.

UPDATE:

I've removed the schematic and am now making this post public.

SUMMARY:

  • Verified the resets are not caused by software by examining the RESETREAS register after a reset occurrs.
  • Learned the NRF52 processors will reset if the supply voltage rises 0.3v at or above a rate of 1mV/mS.
  • Verified the ripple on Vdd was within tolerance. Eliminate brown-out reset as a cause.
  • Verified no reset happens when running off a power supply instead of a coin cell (CR2477)
  • Eliminate battery connection as a cause
  • Suspect the battery brand, test another brand, still got resets.
  • Build and use a current to voltage amp to accurately measure peak battery current
  • Eliminate peak current as a cause
  • Measure battery current while programming the device and discover programmer is sending current into the battery.
  • Configure programmer to not send power to the device
  • Retest 12 devices with fresh batteries.

At this point I am gaining confidence that the programmer was damaging the coin cells with the reverse current. I've appealed to Nordic to document this in the DK user guide and am converting this post to public in case they don't.

  • Update:

    The sensors have been running for a week without issue so I think we can call the damaged battery theory is correct.

    I am concerned that you have not provided a pointer to official documentation that describes how to connect an external board to the DK for programming when that board runs under its own power. 

    You said that the GNDDETECT line should be used instead of GND. I can't get that to work.

    If we can resolve that then this ticket can be closed as far as I am concerned.

    Would it be better to open a new ticket for the GNDDETECT issue?

  • Hi,

    I'm happy to hear that the issue is resolved.

    brian said:
    official documentation that describes how to connect an external board to the DK for programming when that board runs under its own power.

    There is general production programming white paper here. For the DK, the only doc for debug out/ programming can be found here. I see that we should add some more documention for this. The offical doc from Segger can be found here.

    brian said:
    You said that the GNDDETECT line should be used instead of GND. I can't get that to work.

     I tested it here now, and connecting GND on the sensor to GND the DK is correct. Previous statement with the GND DETECT is not correct.

  • Sigurd,

    OK, I think covers everything. This ticket can be closed as far as I am concerned. It has been a pleasure working with on. Thanks for all the time and energy.

    -- Brian

Related