[nRF9160] How to differente between brown-out (BOR) vs initial power-up (POR) resets

Dear All,

We have a custom design with a nRF9160 powered by Lithium primary batteries.

When batteries end of life is coming or sometimes when harsh environmental operating conditions occurs (high/low temperatures, weak network conditions, etc.), battery voltage may drop below 2.8VDC when modem is powered-on (high peak current not handled by bulk capacitors).

We can see in the last datasheet, BOR and POR voltage thresholds:

And also the reset behavior between POR and BOR, where RESETREAS register would help us to differentiate these 2 sources of reset:

Then take a look to the RESETREAS register:

There's no flag helping to differentiate between BOR and POR.

Are we missing something?

What could be a workaround to differentiate at Nordic's power-up if it has been caused by a reset or a nominal power-on?

Many of our devices on the field show unpredictable behavior because of these resets, like entering in a rebooting loop which could last several minutes (which accelerates discharge of battery)

We'd like to find a FW workaround, any advice would be kindly appreciated.

Regards

Parents
  • If you have a register on another chip that holds its value well below 2.8V then you can use that as a brownout flag at boot. I have an accelerometer that holds its register values down to 1V (determined by experiment), beyond which they are reset to default values on startup. On boot, if a wisely chosen register is not at its default value and resetreas==0, then it was a brownout. For instance, there is an step counter feature I don't use, and an 8 bit step counter threshold register, so I have 8 bits that I can read/write to that retains their value to 1V. Besides brownout, I could use the other bits to determine which load/subsystem caused the brownout. 

Reply
  • If you have a register on another chip that holds its value well below 2.8V then you can use that as a brownout flag at boot. I have an accelerometer that holds its register values down to 1V (determined by experiment), beyond which they are reset to default values on startup. On boot, if a wisely chosen register is not at its default value and resetreas==0, then it was a brownout. For instance, there is an step counter feature I don't use, and an 8 bit step counter threshold register, so I have 8 bits that I can read/write to that retains their value to 1V. Besides brownout, I could use the other bits to determine which load/subsystem caused the brownout. 

Children
No Data
Related