<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>nRF52833 development</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/64518/nrf52833-development</link><description>Hello all, 
 I am working on low power sensor development with nRF52833 as target. I have some questions but I&amp;#39;m not sure it this was addressed in some other posts. 
 1. I don&amp;#39;t have nRF52833 DK but instead I use nRF52840DK for development under SES environment</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 14 Aug 2020 10:54:09 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/64518/nrf52833-development" /><item><title>RE: nRF52833 development</title><link>https://devzone.nordicsemi.com/thread/264597?ContentTypeID=1</link><pubDate>Fri, 14 Aug 2020 10:54:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f67207d0-ec0c-41c6-a748-f314a0f03b34</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;Sorry, my mistake. The bottom part is the stack section absolute address location and size (that is set in the adjustment. The stack, however, is placed at the top of RAM and grows down. If you check out the generated .map file, you can search for the symbol &amp;quot;__StackTop&amp;quot; to see exactly this.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52833 development</title><link>https://devzone.nordicsemi.com/thread/264556?ContentTypeID=1</link><pubDate>Fri, 14 Aug 2020 07:19:18 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:128c95e1-5893-44ac-bede-fa9ab6a1d7fb</guid><dc:creator>deknoob</dc:creator><description>&lt;p&gt;&lt;img alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/Screenshot-2020_2D00_08_2D00_14_5F00_17_2D00_15_2D00_40_2D00_254.png" /&gt;&lt;/p&gt;
&lt;p&gt;I am using SES and this is what I think is indication which part of RAM is used. There is something at the top.&lt;br /&gt;In fact I already tried powering off&amp;nbsp;all of RAM8 and it crashed.&lt;/p&gt;
&lt;p&gt;I also tried to change RAM size in linker, to bring all used RAM closer to bottom, but it also crashed when I power off&amp;nbsp;RAM8.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52833 development</title><link>https://devzone.nordicsemi.com/thread/264552?ContentTypeID=1</link><pubDate>Fri, 14 Aug 2020 07:02:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f957f99f-dbd1-4fe6-828f-3c0da5dbaa11</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;The RAM should get filled up &amp;quot;from the bottom up&amp;quot;, so depending on how much RAM your application uses, you should be able to turn off the &amp;quot;later&amp;quot; RAM pages of your application.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52833 development</title><link>https://devzone.nordicsemi.com/thread/264430?ContentTypeID=1</link><pubDate>Thu, 13 Aug 2020 10:51:37 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:073b7c60-35a9-44da-9b93-84edb9c87a0b</guid><dc:creator>deknoob</dc:creator><description>&lt;p&gt;My application is using around 32KB of RAM. Hence I should be able to turn off power to some RAM sections. How can I find out which RAM sections I am able to power off in system ON mode, without application crashing?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52833 development</title><link>https://devzone.nordicsemi.com/thread/264266?ContentTypeID=1</link><pubDate>Wed, 12 Aug 2020 12:39:35 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c151a7fd-c144-4e59-95a8-b0633d20fba7</guid><dc:creator>deknoob</dc:creator><description>&lt;p&gt;Hi Simon,&lt;/p&gt;
&lt;p&gt;I did not make any other changes to the app I included in last post, Just setting RTC callback to zero.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I am using nrf52840 DK for development and my application is drawing 2.8uA @3V while sleeping. There is absolutely no activity happening during sleep, except maybe for RTC ticks. I am quite happy with this, but trying to improve as much as I can because this product will have soldered battery which should last for 10 years. I will eventually disable some RAM and my target device is nRF52833 which has only half of RAM compared to 52840, so I will be able to reduce consumption.&amp;nbsp;&lt;br /&gt;Thank you for your support&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52833 development</title><link>https://devzone.nordicsemi.com/thread/264257?ContentTypeID=1</link><pubDate>Wed, 12 Aug 2020 12:12:00 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:eb96a732-06f2-4680-a994-fd90f2498b54</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;I&amp;#39;m sorry, but setting the rtc_handler to 0 in the nrf_drv_rtc_init() bricks the device on my end. Have you made any other changes to your application to allow for this setting to 0? What current consumption&amp;nbsp;is the best you&amp;#39;re able to achieve? I&amp;#39;ve tested myself on an nRF52832 DK (the only DK I had at hand this morning, which according to the spec. should draw ~1.9µA in this mode) and got it down to ~2.3µA with very small adjustments to the RTC handler.&lt;/p&gt;
&lt;p&gt;As for the 1.5µA that is stated in the spec. this is the absolute lowest possible current consumption you can achieve with the RTC running. This is a combination that&amp;#39;s not really usable in and of itself as you will always need to have some RAM enabled if you&amp;#39;d want to execute interrupts, etc. The SDK examples are made to be generic and suit most use cases, and are likely in need of modifications in order to suit specific use cases. With the RTC module in the SDK with a usable application wrapped around it, getting the current consumption down to ~2.0µA should be feasible during sleep mode, depending on the application of course.&lt;/p&gt;
&lt;p&gt;My apologies for any confusion and misunderstandings throughout this thread.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52833 development</title><link>https://devzone.nordicsemi.com/thread/264000?ContentTypeID=1</link><pubDate>Tue, 11 Aug 2020 10:24:58 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5d82ef0b-19c6-4c54-b202-4fc73e10378f</guid><dc:creator>deknoob</dc:creator><description>&lt;p&gt;Hi again,&lt;/p&gt;
&lt;p&gt;I figured out that if I change this line&lt;/p&gt;
&lt;pre&gt;err_code = nrf_drv_rtc_init(&amp;amp;rtc, &amp;amp;config, rtc_handler);&lt;/pre&gt;
&lt;p&gt;to this:&lt;/p&gt;
&lt;pre&gt;err_code = nrf_drv_rtc_init(&amp;amp;rtc, &amp;amp;config, 0);&lt;/pre&gt;
&lt;p&gt;then it seems to work fine, no bricking when all RAM power is off. Presumably replacing RTC callback routine by system reset vector. I guess 0 is system reset vector, is it?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Regards&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52833 development</title><link>https://devzone.nordicsemi.com/thread/263939?ContentTypeID=1</link><pubDate>Tue, 11 Aug 2020 07:25:26 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c8ce55e2-4082-4578-a979-79b06def0dea</guid><dc:creator>deknoob</dc:creator><description>&lt;p&gt;Hi Simon,&lt;/p&gt;
&lt;p&gt;My application is such that sensor sleeps for 8 hours, wakes up, performs soft reset, then starts advertising for few minutes, then goes back to 8 hour sleep. It stays in this loop forever. As you can see, battery life greatly depends on power during sleep. I hope to achieve&amp;nbsp;1.5uA sleep current as specified in product spec (wake on RTC event and no RAM retention)&lt;/p&gt;
&lt;table class="t1" cellpadding="0" cellspacing="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="td1" valign="top"&gt;
&lt;p class="p1"&gt;&lt;span class="s1"&gt;I&lt;/span&gt;&lt;sub&gt;ON_RAMOFF_RTC&lt;/sub&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td class="td1" valign="top"&gt;
&lt;p class="p2"&gt;System ON, no RAM retention, wake on RTC (running from LFRC clock)&lt;/p&gt;
&lt;/td&gt;
&lt;td class="td1" valign="top"&gt;
&lt;p class="p3"&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td class="td1" valign="top"&gt;
&lt;p class="p2"&gt;1.50&lt;/p&gt;
&lt;/td&gt;
&lt;td class="td1" valign="top"&gt;
&lt;p class="p3"&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td class="td1" valign="top"&gt;
&lt;p class="p2"&gt;&amp;micro;A&lt;/p&gt;
&lt;/td&gt;
&lt;td class="td1" valign="top"&gt;
&lt;p class="p3"&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Actually, RAM retention is term applicable only for System OFF state (above table entry may be misleading because wake on RTC event assumes system is ON). I think the table entry should say &amp;quot;System ON, all RAM powered off, wake on RTC&amp;quot;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I have modified RTC example as below. After&amp;nbsp;RTC timer is initialised, all of the RAM is powered off. When RTC interrupts, soft reset is called.&lt;/p&gt;
&lt;p&gt;This is exactly what I want to do in my application. Result is that my nRF52840 DK bricks itself (I need to recover it by (&lt;span&gt;nrfjprog --recover --family NRF52)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;I actually expected this will happen because turning ALL of the RAM off is like &amp;quot;cutting the branch you sit on&amp;quot;&amp;nbsp;&lt;span class="emoticon" data-url="https://devzone.nordicsemi.com/cfs-file/__key/system/emoji/1f642.svg" title="Slight smile"&gt;&amp;#x1f642;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Can you illustrate&amp;nbsp;example which results in 1.5uA current during timeout and wake on RTC?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;pre&gt;/**
 * Copyright (c) 2014 - 2020, Nordic Semiconductor ASA
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modification,
 * are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice, this
 *    list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form, except as embedded into a Nordic
 *    Semiconductor ASA integrated circuit in a product or a software update for
 *    such product, must reproduce the above copyright notice, this list of
 *    conditions and the following disclaimer in the documentation and/or other
 *    materials provided with the distribution.
 *
 * 3. Neither the name of Nordic Semiconductor ASA nor the names of its
 *    contributors may be used to endorse or promote products derived from this
 *    software without specific prior written permission.
 *
 * 4. This software, with or without modification, must only be used with a
 *    Nordic Semiconductor ASA integrated circuit.
 *
 * 5. Any software provided in binary form under this license must not be reverse
 *    engineered, decompiled, modified and/or disassembled.
 *
 * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA &amp;quot;AS IS&amp;quot; AND ANY EXPRESS
 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 */
/** @file
 * @defgroup rtc_example_main main.c
 * @{
 * @ingroup rtc_example
 * @brief Real Time Counter Example Application main file.
 *
 * This file contains the source code for a sample application using the Real Time Counter (RTC).
 *
 */

#include &amp;quot;nrf.h&amp;quot;
#include &amp;quot;nrf_gpio.h&amp;quot;
#include &amp;quot;nrf_drv_rtc.h&amp;quot;
#include &amp;quot;nrf_drv_clock.h&amp;quot;
#include &amp;quot;boards.h&amp;quot;
#include &amp;quot;app_error.h&amp;quot;
#include 
#include 

#define COMPARE_COUNTERTIME  (3UL)                                        /**&amp;lt; Get Compare event COMPARE_TIME seconds after the counter starts from 0. */

#ifdef BSP_LED_0
    #define TICK_EVENT_OUTPUT     BSP_LED_0                                 /**&amp;lt; Pin number for indicating tick event. */
#endif
#ifndef TICK_EVENT_OUTPUT
    #error &amp;quot;Please indicate output pin&amp;quot;
#endif
#ifdef BSP_LED_1
    #define COMPARE_EVENT_OUTPUT   BSP_LED_1                                /**&amp;lt; Pin number for indicating compare event. */
#endif
#ifndef COMPARE_EVENT_OUTPUT
    #error &amp;quot;Please indicate output pin&amp;quot;
#endif

const nrf_drv_rtc_t rtc = NRF_DRV_RTC_INSTANCE(0); /**&amp;lt; Declaring an instance of nrf_drv_rtc for RTC0. */

/** @brief: Function for handling the RTC0 interrupts.
 * Triggered on TICK and COMPARE0 match.
 */
static void rtc_handler(nrf_drv_rtc_int_type_t int_type)
{
    NVIC_SystemReset();


}

/** @brief Function configuring gpio for pin toggling.
 */
static void leds_config(void)
{
    bsp_board_init(BSP_INIT_LEDS);
}

/** @brief Function starting the internal LFCLK XTAL oscillator.
 */
static void lfclk_config(void)
{
    ret_code_t err_code = nrf_drv_clock_init();
    APP_ERROR_CHECK(err_code);

    nrf_drv_clock_lfclk_request(NULL);
}

/** @brief Function initialization and configuration of RTC driver instance.
 */
static void rtc_config(void)
{
    uint32_t err_code;&lt;br /&gt;&lt;br /&gt;    //Initialize RTC instance
    nrf_drv_rtc_config_t config = NRF_DRV_RTC_DEFAULT_CONFIG;
    config.prescaler = 4095;
    err_code = nrf_drv_rtc_init(&amp;amp;rtc, &amp;amp;config, rtc_handler);
    APP_ERROR_CHECK(err_code);

    //Enable tick event &amp;amp; interrupt
    nrf_drv_rtc_tick_enable(&amp;amp;rtc,true);

    //Set compare channel to trigger interrupt after COMPARE_COUNTERTIME seconds
    err_code = nrf_drv_rtc_cc_set(&amp;amp;rtc,0,COMPARE_COUNTERTIME * 8,true);
    APP_ERROR_CHECK(err_code);


    //Power on RTC instance
    nrf_drv_rtc_enable(&amp;amp;rtc);


}

/**
 * @brief Function for application main entry.
 */
int main(void)
{
    leds_config();

    lfclk_config();

    rtc_config();

NRF_POWER-&amp;gt;RAM[0].POWERCLR = 0x3; 
NRF_POWER-&amp;gt;RAM[1].POWERCLR = 0x3;
NRF_POWER-&amp;gt;RAM[2].POWERCLR = 0x3;
NRF_POWER-&amp;gt;RAM[3].POWERCLR = 0x3;
NRF_POWER-&amp;gt;RAM[4].POWERCLR = 0x3;
NRF_POWER-&amp;gt;RAM[5].POWERCLR = 0x3;
NRF_POWER-&amp;gt;RAM[6].POWERCLR = 0x3;
NRF_POWER-&amp;gt;RAM[7].POWERCLR = 0x3;
NRF_POWER-&amp;gt;RAM[8].POWERCLR = 0x3F;

    while (true)
    {
        __SEV();
        __WFE();
        __WFE();
    }
}


/**  @} */&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;But if I only power OFF RAM 8, like this&lt;/p&gt;
&lt;pre&gt;NRF_POWER-&amp;gt;RAM[8].POWERCLR = 0x3F;&lt;/pre&gt;
&lt;p&gt;Then it doesn&amp;#39;t brick itself.&lt;/p&gt;
&lt;p&gt;What I meant is that some RAM must stay powered on during sleep.&lt;/p&gt;
&lt;p&gt;Regards&lt;/p&gt;
&lt;p&gt;Kerim&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;
&lt;/pre&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52833 development</title><link>https://devzone.nordicsemi.com/thread/263822?ContentTypeID=1</link><pubDate>Mon, 10 Aug 2020 12:31:43 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1847c15e-2b3f-443b-a2ff-2360249dfaa3</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;No problem at all, we&amp;#39;re here to help you get a better understanding of nRF development. I should have been clearer in my explanation.&lt;/p&gt;
&lt;p&gt;The RTC peripheral is its own independent peripheral and is not dependent on the app_timer in order to trigger a wake-up, as long as the peripheral is powered you won&amp;#39;t be dependent on what the RAM is doing. You can take a look at the&amp;nbsp;&lt;a href="https://infocenter.nordicsemi.com/topic/sdk_nrf5_v17.0.0/rtc_example.html"&gt;RTC peripheral example&lt;/a&gt;&amp;nbsp;to see how you can use RTC without the app_timer.&lt;/p&gt;
&lt;p&gt;Keep in mind that, depending on your application, you might not see a better average current consumption if you have to reinitialize a bunch of peripherals whenever your device wakes up due to the RAM not being retained, so it might be just as energy-efficient to have RAM retention if you save a lot of power on the wake-up process that way.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52833 development</title><link>https://devzone.nordicsemi.com/thread/263548?ContentTypeID=1</link><pubDate>Fri, 07 Aug 2020 08:35:58 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:43196a9b-7583-472f-a972-34bc03c4700c</guid><dc:creator>deknoob</dc:creator><description>&lt;p&gt;I am sorry for bothering you, but I think there is still a problem with sleep-wakeup sequence:&lt;/p&gt;
&lt;p&gt;1. When sleep timer is created, pointer to sleep timer callback routine is stored in RAM (by calling app_timer_create)&lt;br /&gt;2. RAM retention&amp;nbsp;is turned OFF and device sleep timer starts counting. (by calling&amp;nbsp;app_timer_start)&lt;br /&gt;3. If there is no active task (for example advertising), device will go to low power mode. All RAM content will be lost&lt;br /&gt;4. When sleep timer expires, CPU will have to fetch pointer to&amp;nbsp;&lt;span&gt;sleep timer callback routine (created in step 1.)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;But at step&amp;nbsp;4 all RAM data is lost, including pointer to&amp;nbsp;sleep timer callback routine. How can program execution go to&amp;nbsp;sleep timer callback routine if pointer to it is destroyed&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Best regards&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52833 development</title><link>https://devzone.nordicsemi.com/thread/263527?ContentTypeID=1</link><pubDate>Fri, 07 Aug 2020 07:01:11 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c7371b7d-5a96-4fae-84f1-46a3ceac8452</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;Thank you for clarifying. When you&amp;#39;re sleeping with no RAM retention, the RAM block(s) will be disabled and powered off. So when you wake up again, you would necessarily have to reinitialize your application again, either by doing a reset or by running the necessary init functions upon wake-up.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52833 development</title><link>https://devzone.nordicsemi.com/thread/263449?ContentTypeID=1</link><pubDate>Thu, 06 Aug 2020 13:09:37 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4b917c5f-4c1d-4afb-b387-691368c663df</guid><dc:creator>deknoob</dc:creator><description>&lt;p&gt;Hi Simon,&lt;/p&gt;
&lt;p&gt;My understanding is that data stored to RAM with no retention will simply &amp;quot;evaporate&amp;quot; after some time. Basically, we are unplugging the power source to RAM.&lt;/p&gt;
&lt;p&gt;If device goes to sleep and there is no RAM retention, then&amp;nbsp;when device&amp;nbsp;wakes up by RTC (after few hours), all data stored to RAM will be invalid, like stack and all other variables. And CPU could&amp;nbsp;go to some undefined state when reading faulty data from RAM. Same would happen if you have RAM hardware fault for example.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This is why I think RTC wake up after sleep with no RAM retention &amp;nbsp;has to be followed by device reset (or cold restart, reboot... such that RAM is first powered on and then initialised before being used). Or alternatively, at least some minimal part of RAM has to be retained.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52833 development</title><link>https://devzone.nordicsemi.com/thread/263362?ContentTypeID=1</link><pubDate>Thu, 06 Aug 2020 08:25:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6c977d10-be42-48fb-9ee2-50cec9a73d3e</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;Correct, the System ON, RTC, No RAM retention is the lowest power state allowing wakeups from an internal timer.&amp;nbsp;I&amp;#39;m sorry, I&amp;#39;m not exactly sure I follow on the reset you&amp;#39;re talking about. Is there any particular reason you need to go back on top of main upon wake-up? The RTC timer will be reset and triggered again once your device is put back to sleep, so I&amp;#39;m not sure what you&amp;#39;re referring to here.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52833 development</title><link>https://devzone.nordicsemi.com/thread/263237?ContentTypeID=1</link><pubDate>Wed, 05 Aug 2020 13:16:13 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1cdefb9a-0a1c-4c77-8f55-fa3293b1609b</guid><dc:creator>deknoob</dc:creator><description>&lt;p&gt;Thank you Simon for comprehensive answer.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Regarding 2., I am aware that I can&amp;#39;t use SYSTEM OFF because I don&amp;#39;t have external source to wake device up after timeout. As I understand,&amp;nbsp;lowest power state which allows wake after long timeout is wake on RTC event and no RAM retention.&lt;/p&gt;
&lt;p&gt;I am actually not sure if I have to do anything special to ensure device resets after RTC timeout,&amp;nbsp;considering that all RAM context will be invalid when timer callback handler is called. Because pointer to timer callback handler is stored in RAM, is it?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52833 development</title><link>https://devzone.nordicsemi.com/thread/263204?ContentTypeID=1</link><pubDate>Wed, 05 Aug 2020 11:51:12 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5bcdcc5c-b100-4ca4-be47-3198700601d2</guid><dc:creator>Simonr</dc:creator><description>&lt;p&gt;Hi&lt;/p&gt;
&lt;p&gt;1. The biggest difference between the two is that the nRF52840 has the &lt;a href="https://infocenter.nordicsemi.com/topic/comp_matrix_nrf52811/COMP/nrf52811/nrf52811_ic_rev_sdk_sd_comp_matrix.html"&gt;CryptoCell feature&lt;/a&gt;&amp;nbsp;for a crypto backend, unlike the nRF52833 which is using OBERON for this purpose. Other than that the RAM and Flash memory of the nRF52833 is halved compared to the nRF52840.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The changes you would need to make in a pca10056 project are, therefore:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A&lt;span&gt;s the nrf_crypto library provides a unified API. The only thing you need to do is to disable the CC310 backend in&amp;nbsp;&lt;/span&gt;&lt;span&gt;sdk_config.h by setting&amp;nbsp;NRF_CRYPTO_BACKEND_CC310_ENABLED to 0, and enable the Oberon backend by setting&amp;nbsp;NRF_CRYPTO_BACKEND_OBERON_ENABLED to 1, as well as setting the&amp;nbsp;NRF_CRYPTO_BACKEND_NRF_HW_RNG_ENABLED to 1. You can compare with the sdk_config.h of the&amp;nbsp;pca10040 project to see how this should be done, and they should be identical with regard to crypto configuration.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Next, you will also have to do these changes to your project settings. Change to device&amp;nbsp;&amp;quot;NordicSemiconductor-&amp;gt;nRF52833_xxaa&amp;quot;.&amp;nbsp;&lt;/span&gt;In the C/C++ preprocessor settings, remove the defines &amp;quot;NRF52&amp;quot; and &amp;quot;NRF52840_XXAA&amp;quot; and add the preprocessor define &amp;quot;NRF52833_XXAA&amp;quot;. In the linker script settings, adjust the linker script to match the maximum RAM and Flash size of nRF52833. Remove the&amp;nbsp;following files from the project:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;&amp;lt;compiler&amp;gt;_startup_nrf52.s&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;system_nrf52.c&amp;nbsp;&lt;/code&gt;and add the following files to the project:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;&amp;lt;compiler&amp;gt;_startup_nrf52833.s&lt;/code&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;code&gt;system_nrf52833.c&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;2. You should be able to just do a system reset upon wake up in your application. Please note that SYSTEM OFF sleep would be the least consuming power-saving mode, and will trigger a reset upon wake-up. This will, however, not be able to use an internal timer to decide when to wake up, as the CPU would effectively be off for the sleep duration, and would need an external event to wake it up.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Simon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>