I am debugging a program after compiling with no errors using the SDK 15.2.0 on a windows laptop and nRF52840 board. The program was designed to save 8 bytes of data to flash every 50ms for 3 days using fstorage. There should be enough storage on this particular board to allow for this, however I have not had a successful 3 day run yet. The latest bug in the code occurred at "void RTC1_IRQHandler();" in the call stack and about 90 minutes in with an error value of what looks to be 0x00026FC4, which doesn't make sense, at least not to me. I understand this has something to do with the timers, which I use to call the fstorage functions every 50ms. However, as a beginner programmer, I am unable to assess any issues at a lower level. Could someone give some suggestions as to what may be causing this issue?
What do you mean with "an error value of what looks to be 0x00026FC4"? This isn't an error present in our SDK as far as I know. Are you getting this error on your laptop? Also, have you done your math correctly here? 8 bytes every 50ms = 160 byte every second. Which means you would fill up the 1 MB Flash in approximately 105 minutes. Do you agree on this?
Wow do I feel dumb for that post! You are absolutely right about my math, thank you for the clarification. Also the error code I saw I think was actually a flash location, I was just confused.
While you were right about my math and the error code being a mistake, I ran the test again and the same error occurred, however I got the correct error code this time: 0x00002006. Also, it was also noted that the timer stopped at BA 4A and stored this value in the flash before it stopped. Once again the call stack shows the latest function call before the app error handler was the RTC1_IRQHandler(). What else could be causing this error?
What have you set your prescaler as? This link explains how the prescaler works, as it might be that which overflows. If not. Does it still take about 90 minutes before your application stops? How often are you storing data, and how much are you storing each time now? What value is "BA 4A"? Also I am not able to find any errors with the code 0x00002006.
Thanks for the helpful link! APP_TIMER_CONFIG_RTC_FREQUENCY is set to 31, I believe this sets the prescaler. The past two runs have both stopped at this "BA4A" value which is the value of the counter stored in flash. I believe in decimal this is about 13 hours because the hex value is stored different from its real value 4ABA, however I ran the test overnight and didn't time it myself. Data is now being stored every 5 seconds and this was set by changing the timeout_ticks parameter passed in app_timer_start(). A single 32 bit variable is being stored but is only about 8 bit when the program crashes. Also, my interpretation of the error code was that there was an error 6 on page 2, error 6 being "storage full" based on https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk5.v15.0.0%2Fgroup__sdk__error.html .