<?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>About timing in mesh processing</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/46003/about-timing-in-mesh-processing</link><description>Hello team, I&amp;#39;m working on system development using Mesh SDK and I have some questions so please let me know. ############### Development environment IDE : Segger Embedded Stuido SoC : nRF52840 SDK : Mesh v2.2.0 normal SDK v15.0.0 Base project : light</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 21 Jun 2019 12:11:12 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/46003/about-timing-in-mesh-processing" /><item><title>RE: About timing in mesh processing</title><link>https://devzone.nordicsemi.com/thread/194096?ContentTypeID=1</link><pubDate>Fri, 21 Jun 2019 12:11:12 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c52a36d8-257a-4604-abcc-4631a9b26de3</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;No problem, happy to help &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;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: About timing in mesh processing</title><link>https://devzone.nordicsemi.com/thread/193790?ContentTypeID=1</link><pubDate>Thu, 20 Jun 2019 07:23:58 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:1846d044-3bf3-4cc7-a56a-938a66f9c17a</guid><dc:creator>wataru_m</dc:creator><description>&lt;p&gt;Hi&amp;nbsp;&lt;span&gt;Torbj&amp;oslash;rn&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Thank you for your advice.&lt;br /&gt;Actually, I thought the same thing after asking a question.&lt;br /&gt;When I checked on the device now, I could see that the value was set in the INTENSET register immediately after the TWI communication.&lt;br /&gt;&lt;br /&gt;Now I know where to look for information about interrupts, thank you.&lt;br /&gt;&lt;br /&gt;Best regards&lt;br /&gt;Wataru&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: About timing in mesh processing</title><link>https://devzone.nordicsemi.com/thread/193297?ContentTypeID=1</link><pubDate>Tue, 18 Jun 2019 06:50:53 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:09393d49-04d0-498b-92a8-42d7caba2c74</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi Wataru&lt;/p&gt;
&lt;p&gt;If you look at the driver implementation in nrf_drv_twi.c&amp;nbsp;you will see that interrupts are not enabled until you start a TWI transfer, so after init the INTEN register will still be 0.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;You can search for the&amp;nbsp;nrf_twi_int_enable function in nrf_drv_twi.c to see where INTENSET is written.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;Torbjørn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: About timing in mesh processing</title><link>https://devzone.nordicsemi.com/thread/193171?ContentTypeID=1</link><pubDate>Mon, 17 Jun 2019 12:11:54 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9b3896f5-82c3-4752-a1c9-0efd7b6ed5c3</guid><dc:creator>wataru_m</dc:creator><description>&lt;p&gt;&lt;span&gt;Hi,&amp;nbsp;&lt;/span&gt;&lt;span&gt;Torbj&amp;oslash;rn&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;I learned how to get information about interrupts. Thank you very much.&lt;br /&gt;&lt;br /&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;/**
 * @brief UART initialization.
 */
void twi_init (void)
{
    ret_code_t err_code;

    const nrf_drv_twi_config_t twi_tof_config = {
//       .scl                = 3,
//       .sda                = 2,
       .scl                = ARDUINO_SCL_PIN,
       .sda                = ARDUINO_SDA_PIN,
       .frequency          = NRF_DRV_TWI_FREQ_400K,
       .interrupt_priority = APP_IRQ_PRIORITY_HIGH,
       .clear_bus_init     = false
    };

    err_code = nrf_drv_twi_init(&amp;amp;m_twi, &amp;amp;twi_tof_config, twi_handler, NULL);
    APP_ERROR_CHECK(err_code);

    nrf_drv_twi_enable(&amp;amp;m_twi);
}
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I initialize and enable TWI in this way.&lt;br /&gt;I think this is the same as the peripheral example. not right?&lt;br /&gt;&lt;br /&gt;Best regards,&amp;nbsp;&lt;br /&gt;Wataru&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: About timing in mesh processing</title><link>https://devzone.nordicsemi.com/thread/193160?ContentTypeID=1</link><pubDate>Mon, 17 Jun 2019 11:56:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:aecc6f54-5ab1-4821-b3c6-b623cf60478c</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi Wataru&lt;/p&gt;
&lt;p&gt;You are correct, the INTEN register can not be accessed directly, only indirectly through the INTENSET and INTENCLR registers.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;To read INTEN you just need to read INTENSET or INTENCLR, they will return the same thing.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;To write to INTEN you have to either set or clear bits independently by writing to INTENSET/INTENCLR.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;How do you enable TWI in your example?&lt;/p&gt;
&lt;p&gt;Do you use one of the standard drivers?&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;Torbjørn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: About timing in mesh processing</title><link>https://devzone.nordicsemi.com/thread/192811?ContentTypeID=1</link><pubDate>Fri, 14 Jun 2019 02:11:44 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d8c2e7b3-562a-4913-9583-0b576929bc17</guid><dc:creator>wataru_m</dc:creator><description>&lt;p&gt;&lt;span&gt;Hi,&amp;nbsp;&lt;/span&gt;&lt;span&gt;Torbj&amp;oslash;rn&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Thank you for your reply.&lt;br /&gt;I feel that knowledge about Nordic products is being accumulated little by little. :)&lt;br /&gt;&lt;br /&gt;I prepared a debugging environment to check the register information a little.&lt;br /&gt;It seems there are peripherals that can and cannot be referenced the INTEN register directory from SDK.&lt;br /&gt;Is this right?&lt;br /&gt;&lt;br /&gt;I referenced the NRF_TWI0-&amp;gt; ENABLE&amp;nbsp;and NRF_TWI0-&amp;gt; INTENSET register for TWI.&lt;br /&gt;Before enabling TWI, both registers were &amp;quot;0&amp;quot;, and after enabling TWI, ENABLE was &amp;quot;6&amp;quot; and INTENSET was &amp;quot;0&amp;quot;.&lt;br /&gt;&lt;br /&gt;The TWI interrupt (NACK event) is generated intentionally, but looking at the register, I do not think that the interrupt is enabled.&lt;br /&gt;&lt;br /&gt;Is something wrong with the operation or understanding?&lt;br /&gt;&lt;br /&gt;Best regards&lt;br /&gt;Wataru&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: About timing in mesh processing</title><link>https://devzone.nordicsemi.com/thread/192559?ContentTypeID=1</link><pubDate>Thu, 13 Jun 2019 07:10:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:11608bab-6ec4-44d5-84f6-e5147fd500d8</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi Wataru&lt;/p&gt;
&lt;p&gt;Your understanding is mostly correct, just a small clarification on INTENSET and INTENCLR:&lt;/p&gt;
&lt;p&gt;Both INTENSET and INTENCLR is used to access the internal INTEN register, which is the register that actually enables interrupts.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;INTENSET allows you to set bits in INTEN, while INTENCLR allows you to clear them.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Reading either INTENSET or INTECLR will return the same thing, namely the state of INTEN.&amp;nbsp;&lt;br /&gt;It is only when you write to these registers that they behave differently.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;Torbjørn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: About timing in mesh processing</title><link>https://devzone.nordicsemi.com/thread/192296?ContentTypeID=1</link><pubDate>Wed, 12 Jun 2019 09:17:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:28c73c53-3626-4a31-b610-ddd4f1157b59</guid><dc:creator>wataru_m</dc:creator><description>&lt;p&gt;Hi,&amp;nbsp;&lt;span&gt;Torbj&amp;oslash;rn&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sorry for my late reply.&lt;br /&gt;&lt;br /&gt;I understood the peripheral ID information to some extent.&lt;br /&gt;・Is interrupt pending: ISPR register of NVIC&lt;br /&gt;・Whether interrupts are enabled: INTENSET of peripheral register&lt;br /&gt;・Whether interrupts are disabled: INTENCLR in peripheral register&lt;br /&gt;&lt;br /&gt;Above is my recognition that where should be confirmed about interruption. Correct?&lt;br /&gt;&lt;br /&gt;Best regards&lt;br /&gt;Wataru&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: About timing in mesh processing</title><link>https://devzone.nordicsemi.com/thread/191318?ContentTypeID=1</link><pubDate>Thu, 06 Jun 2019 11:12:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:608e3309-1b18-40d7-a061-61d0449c1abb</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi Wataru&lt;/p&gt;
&lt;p&gt;How to calculate the peripheral ID is documented &lt;a href="https://infocenter.nordicsemi.com/topic/ps_nrf52840/peripheral_interface.html?cp=3_0_0_5_0_0#concept_xxc_ftz_vr"&gt;here&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;As you can see it is based on the base address of each peripheral, which is documented at the top of the &amp;quot;registers&amp;quot; section for each of the peripherals in the nRF52840 (like &lt;a href="https://infocenter.nordicsemi.com/topic/ps_nrf52840/spim.html?cp=3_0_0_5_24_5#topic"&gt;here&lt;/a&gt;&amp;nbsp;for the SPIM modules).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If all the application interrupts are executed at the same priority it means they will all have to wait for each other.&amp;nbsp;One will not be able to interrupt another.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;quot;&lt;span&gt;In this case, high priority interrupts are considered to be time critical processes closer to the physical layer, are they correct?&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Yes, this is correct. Normally the timing is more critical the closer you get to the physical layer, and it is the same for Bluetooth mesh.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;Torbjørn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: About timing in mesh processing</title><link>https://devzone.nordicsemi.com/thread/191076?ContentTypeID=1</link><pubDate>Wed, 05 Jun 2019 11:46:37 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9e120f4c-f5e8-400c-9974-b17cb2008535</guid><dc:creator>wataru_m</dc:creator><description>&lt;p&gt;&lt;span&gt;Hi&amp;nbsp;&lt;/span&gt;&lt;span&gt;Torbj&amp;oslash;rn&lt;br /&gt;&lt;br /&gt;I see. If I need to measure the time it takes to process the interrupt, I follow your idea.&lt;br /&gt;&lt;br /&gt;I did not refer to any register yet.&lt;br /&gt;I was just looking for information on where to look.&lt;br /&gt;I searched for the specification of nrf52840, but I did not know which NVIC register should I actually watch .&lt;br /&gt;In addition, information on peripheral device ID was not found as well. . .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There is no reset or system OFF status. Even the application does not access the RTC register. (Other than timer)&lt;br /&gt;At the application level, all interrupt processes are executed with the same priority (7).&lt;br /&gt;&lt;br /&gt;In this case, high priority interrupts are considered to be time critical processes closer to the physical layer, are they correct?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Best regards,&amp;nbsp;&lt;br /&gt;Wataru&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: About timing in mesh processing</title><link>https://devzone.nordicsemi.com/thread/191057?ContentTypeID=1</link><pubDate>Wed, 05 Jun 2019 11:17:29 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:10b4a7a8-5fdf-46cf-93f0-24d6a17800ce</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi Wataru&lt;/p&gt;
&lt;p&gt;Yes, my proposal is to set a pin at the start of the interrupt handler, and clear the pin at the end of the interrupt handler. Then you can see accurately when the interrupt handler starts, and for how long it runs.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I am not quite sure what register you are referring to. You should be able to read the pending state of the various interrupts from the ISPR registers in the NVIC peripheral, where each bit stores the pending state of one peripheral.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;ISPR[0] covers peripheral ID&amp;#39;s 0-31, ISPR[1] covers ID&amp;#39;s 32-63, and so forth.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;As for the RTC stopping this won&amp;#39;t happen unless you do a system reset, enter system OFF sleep mode, or disable the low frequency clock source from the application.&amp;nbsp;You could also manually stop the RTC from the code, but there is no reason the mesh stack should do this, and I assume you don&amp;#39;t access the RTC registers either in the application code?&lt;/p&gt;
&lt;p&gt;In other words I don&amp;#39;t see how the timer interrupt generation could be affected, but the execution of the timer handler interrupt could be delayed if a higher priority interrupt is currently running.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;Torbjørn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: About timing in mesh processing</title><link>https://devzone.nordicsemi.com/thread/190533?ContentTypeID=1</link><pubDate>Mon, 03 Jun 2019 13:17:17 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:cc9a61c0-b6d4-494c-9639-659080f8a0c9</guid><dc:creator>wataru_m</dc:creator><description>&lt;p&gt;Hi&amp;nbsp;&lt;span&gt;Torbj&amp;oslash;rn&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It is possible to connect to an oscilloscope.&lt;br /&gt;Are you saying to toggle any GPIO when an interrupt occurs?&lt;br /&gt;If possible, I would like to check the register of each interrupt directly. . .&lt;br /&gt;Is it impossible to make it with logs?&lt;br /&gt;&lt;br /&gt;I think that the some delay may be tolerance to knowing the status of the interrupt register in software..&lt;br /&gt;By the way, can you give us information about which register to look at? I would to know this information at least.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;BTW, as I mentioned earlier that no timer interrupt has occurred, is the possibility of my misunderstanding.&lt;br /&gt;I was doing each processing in a fixed cycle, but rearly, I had not had an event that should have happened on a rare cycle so I judged.&lt;br /&gt;&lt;br /&gt;But,&amp;nbsp;The time stamp output from the LOG in the timer interrupt handler proved that it was operating at the intended interval.&lt;br /&gt;&lt;br /&gt;Is there a possibility that this information (timestamp) is unbelievable?&lt;br /&gt;If so, I think that means that RTC sometimes stops.&lt;br /&gt;&lt;br /&gt;It has not yet been confirmed that the operation cycle of one timer in the system was correct.&lt;br /&gt;But I have a question.&lt;br /&gt;Does it happen occasionally that the timer interrupt generation cycle deviates from the intended one?&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Wataru&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: About timing in mesh processing</title><link>https://devzone.nordicsemi.com/thread/190507?ContentTypeID=1</link><pubDate>Mon, 03 Jun 2019 12:30:43 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2e5744b4-2197-44c7-a566-7337c38d2b5e</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi Wataru&lt;/p&gt;
&lt;p&gt;Are you able to connect your kit to an oscilloscope?&lt;/p&gt;
&lt;p&gt;Then you can toggle a pin at the start and end of the interrupt vector, and use the oscilloscope to monitor when the interrupt triggers, and how long it runs.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;While a bit primitive, this is a very non intrusive and reliable way to measure the interrupt activity. Writing to the log can be quite slow, and might not be able to keep up with the interrupt activity.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;Torbjørn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: About timing in mesh processing</title><link>https://devzone.nordicsemi.com/thread/190279?ContentTypeID=1</link><pubDate>Fri, 31 May 2019 11:58:57 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:de1ddcaa-061f-4c24-91fe-4ab7bd93a401</guid><dc:creator>wataru_m</dc:creator><description>&lt;p&gt;&lt;span&gt;HI,&amp;nbsp;&lt;/span&gt;&lt;span&gt;Torbj&amp;oslash;rn&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;I&amp;#39;m sorry for my late reply.&lt;br /&gt;&lt;br /&gt;I understand that the interrupt vector only has a status of pending or not.&lt;br /&gt;By the way, can the status of the interrupt vector be checked by outputting it in LOG during processing?&lt;br /&gt;In the systems we operate, it has been found that, very rarely, timer interrupts do not occur at the expected time.&lt;br /&gt;In order to prove this, I want to know the state of the vector table and so on.&lt;br /&gt;Alternatively, please let me know at the same time if there are other registers useful for debugging.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Yes,&amp;nbsp;It is a physical transfer by radio.&lt;br /&gt;There seems to be no problem with message hoping.&lt;br /&gt;I do not intend to process the contents of the relay message payload.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I also understood the priority of mesh processing in the main application.&lt;br /&gt;I was a little surprised at the lowest priority, but it does not interfere with the time critical processing of lower layers.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Best regards&lt;br /&gt;Wataru&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: About timing in mesh processing</title><link>https://devzone.nordicsemi.com/thread/188502?ContentTypeID=1</link><pubDate>Wed, 22 May 2019 10:08:23 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:e3c287cf-8168-4731-8250-360f426b3fa2</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi Wataru&lt;/p&gt;
&lt;p&gt;Each interrupt vector is either pending or not pending, it doesn&amp;#39;t track how many times the interrupt occurs. If you suspect that the interrupt could happen multiple times before you have time to process the first one you&amp;nbsp;will have to check at the end of the interrupt if there is any more data to process before leaving the interrupt.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Typically this would be implemented by pushing the relevant event data into a FIFO buffer before setting the interrupt pending. Then you can check the state of the FIFO buffer at the end of the interrupt handler, and if the interrupt happens multiple times before you are able to process it you will have to run through all the items in the FIFO.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;When using this approach the number of interrupts you can &amp;#39;hold&amp;#39; is set by the size of the FIFO (how many elements can the FIFO hold).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;quot;&lt;span&gt;Where is message transfer actually done?&amp;nbsp;&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;You mean the physical message transfer over the air?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;This is handled by the lower layers of the mesh implementation, which is included for you by the light_switch example. The application should not have to worry about this, as long as you don&amp;#39;t try to push more data through the mesh than it can handle.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;quot;In other words, at the higher level, like the application layer, is it that the processing priority for messages is set to the lowest value (7)? Like below.&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Interrupts for the application are running at the lowest priority, yes, which means they might be delayed by higher priority interrupts in the lower parts of the mesh stack. This is done to make sure that the processing of mesh events in the application will not affect or delay the time critical mesh operations happening in the stack.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Best regards&lt;br /&gt;Torbjørn&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: About timing in mesh processing</title><link>https://devzone.nordicsemi.com/thread/188072?ContentTypeID=1</link><pubDate>Tue, 21 May 2019 05:29:34 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3671f0aa-d687-485d-9aa1-dc41a41f0681</guid><dc:creator>wataru_m</dc:creator><description>&lt;p&gt;&lt;span&gt;HI,&amp;nbsp;&lt;/span&gt;&lt;span&gt;Torbj&amp;oslash;rn&lt;br /&gt;&lt;br /&gt;Thank you for the reply, I feel that the problem I&amp;#39;m concerned about is gradually solved.&lt;br /&gt;&lt;br /&gt;It turns out that the pending interrupt never disappears.&lt;br /&gt;So how many interrupts can I hold?&lt;br /&gt;Is that something defined elsewhere? Can I change it?&lt;br /&gt;&lt;br /&gt;Here is a concrete example.&lt;br /&gt;When sending messages from five to six edge devices to one gateway device at the same time (as a reply to the message from the gateway), can the gateway receive all messages at once?&lt;br /&gt;&lt;br /&gt;I&amp;#39;m not clear in me if there is a direct relationship with the interrupt ,,,&lt;br /&gt;Where is message transfer actually done? That functionality is included in the light_switch sample project, right?&lt;br /&gt;Does a developer need to develop an application that he wants to realize while also being concerned with message transfer processing (timing etc.)? Or is the message transfer process independent of the application, and the developer does not need to worry? Which one?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;quot;&amp;nbsp;I wouldn&amp;#39;t say less important, just less time critical. In most communications protocols the lower levels of the protocol, closer to the physical layer, are more time critical. The higher levels, closer to the application, don&amp;#39;t have to be processed right away, but can be processed whenever the CPU has some free time.&amp;nbsp; &amp;quot;&lt;br /&gt;&lt;br /&gt;In other words, at the higher level, like the application layer, is it that the processing priority for messages is set to the lowest value (7)? Like below.&lt;br /&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;static void mesh_init(void)
{
    uint8_t dev_uuid[NRF_MESH_UUID_SIZE];
    uint8_t node_uuid_prefix[NODE_UUID_PREFIX_LEN] = SERVER_NODE_UUID_PREFIX;

    ERROR_CHECK(mesh_app_uuid_gen(dev_uuid, node_uuid_prefix, NODE_UUID_PREFIX_LEN));
    mesh_stack_init_params_t init_params =
    {
        .core.irq_priority       = NRF_MESH_IRQ_PRIORITY_LOWEST,
        .core.lfclksrc           = DEV_BOARD_LF_CLK_CFG,
        .core.p_uuid             = dev_uuid,
        .models.models_init_cb   = models_init_cb,
        .models.config_server_cb = config_server_evt_cb
    };
    ERROR_CHECK(mesh_stack_init(&amp;amp;init_params, &amp;amp;m_device_provisioned));
}
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thank you for providing a simple example of how to use app_scheduler.&lt;br /&gt;First of all, we will study the specifications while doing a simple experiment to update the system.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Best regards&lt;br /&gt;Wataru&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: About timing in mesh processing</title><link>https://devzone.nordicsemi.com/thread/187955?ContentTypeID=1</link><pubDate>Mon, 20 May 2019 13:25:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b5241166-a6c9-4b1f-a353-4b7ff0f61c7b</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi Wataru&lt;/p&gt;
&lt;p&gt;&amp;quot;&lt;span&gt;If for some reason it takes a long time to process the current interrupt,&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;can you say the same thing?&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The pending interrupts won&amp;#39;t be forgotten or timed out, if that is what you mean, but if you have very long interrupts in your system it could affect the performance of the mesh.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;In general I would say it is not recommended to have interrupts lasting for much more than 10-50 milliseconds.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;quot;Do you say that in the light_switch example, the callback function (eg, get / set) in main.c is a less important mesh operation?&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;I wouldn&amp;#39;t say less important, just less time critical. In most communications protocols the lower levels of the protocol, closer to the physical layer, are more time critical. The higher levels, closer to the application, don&amp;#39;t have to be processed right away, but can be processed whenever the CPU has some free time.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;quot;By the way, if you try to port from the method of executing each operation by the interrupt like the sample to the method of using app_scheduler, is it so difficult?&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;No, I think using the app scheduler is quite simple. All you have to do is to put the code that you want to schedule into a function, which needs to have the function signature like this:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;void my_app_sched_event_handler_1(void *p_event_data, uint16_t event_size)&lt;br /&gt;{&lt;br /&gt; // Your code here...&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Then you use the&amp;nbsp;app_sched_event_put() function to schedule this function to be run, and any data that you provide in the p_event_data and event_size variables will be available to the function once it is run.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;Torbjørn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: About timing in mesh processing</title><link>https://devzone.nordicsemi.com/thread/186673?ContentTypeID=1</link><pubDate>Mon, 13 May 2019 11:40:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a6fe7856-06ed-4bd4-92a1-3c13025ba9c6</guid><dc:creator>wataru_m</dc:creator><description>&lt;p&gt;&lt;span&gt;HI,&amp;nbsp;&lt;/span&gt;&lt;span&gt;Torbj&amp;oslash;rn&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Thank you. I was able to spend a nice day off.&lt;br /&gt;&lt;br /&gt;I felt relieved to hear that both the processing for the message &lt;br /&gt;and the forwarding of the message are performed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I understood that if an interrupt occurs while processing the same priority, it will be suspended.&lt;br /&gt;If for some reason it takes a long time to process the current interrupt, &lt;br /&gt;can you say the same thing? (Does the pending interrupt be executed after the processing ends?)&lt;br /&gt;&lt;br /&gt;Do you say that in the light_switch example, the callback function (eg, get / set) in main.c is a less important mesh operation?&lt;br /&gt;If so, there is a slight strange. . .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thank you, I will refer to the document about app_scheduler.&lt;br /&gt;By the way, if you try to port from the method of executing each operation by the interrupt like the sample to the method of using app_scheduler, is it so difficult?&lt;br /&gt;&lt;br /&gt;Best regards&lt;br /&gt;Wataru&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: About timing in mesh processing</title><link>https://devzone.nordicsemi.com/thread/186331?ContentTypeID=1</link><pubDate>Fri, 10 May 2019 09:07:59 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:23535cf4-b202-43bf-a37b-5085eb7ed890</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi Wataru&lt;/p&gt;
&lt;p&gt;I hope you had a good vacation &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;1. Yes, you can&amp;#39;t tell for sure if the messages will be relayed or processed first, but both processes will be performed eventually.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2. Yes. If you are in an interrupt, and another interrupt at the same priority occurs, the second interrupt will be executed after the first interrupt is completed. An interrupt can only be interrupted by another interrupt that has a higher priority (lower priority number).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The mesh interrupts are explained in more detail &lt;a href="https://infocenter.nordicsemi.com/topic/com.nordic.infocenter.meshsdk.v3.1.0/md_doc_introduction_mesh_interrupt_priorities.html?cp=5_1_0_4"&gt;here&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Essentially the time critical radio interrupts are running at priority 0, which is the highest priority in the system. This ensures that during critical mesh processing the stack will not be interrupted by anything else.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Less critical mesh operations run at a lower interrupt priority (higher number), and can even run from the main context, so these interrupts you should be able to block for a while without any ill effects.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The app_scheduler library is documented &lt;a href="https://infocenter.nordicsemi.com/topic/com.nordic.infocenter.sdk5.v15.3.0/lib_scheduler.html?cp=5_0_3_38"&gt;here&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;Torbjørn&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: About timing in mesh processing</title><link>https://devzone.nordicsemi.com/thread/186127?ContentTypeID=1</link><pubDate>Thu, 09 May 2019 09:35:21 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f9bc6919-a248-4493-8c8d-1287e547d73a</guid><dc:creator>wataru_m</dc:creator><description>&lt;p&gt;&lt;span&gt;HI,&amp;nbsp;&lt;/span&gt;&lt;span&gt;Torbj&amp;oslash;rn&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Thanks for your reply and&amp;nbsp;I&amp;#39;m so sorry for the too late reply.&lt;br /&gt;I took long vacation...&lt;br /&gt;&lt;br /&gt;I understood that it was the same as the information described in the map file. .&lt;br /&gt;Thank you very much.&lt;br /&gt;&lt;br /&gt;###&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;quot;BTW,&amp;nbsp;can you answer another question on this thread?&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Which question would that be?&lt;/span&gt;&lt;br /&gt;###&lt;br /&gt;&lt;br /&gt;What I commented on your response to my first question.&lt;br /&gt;I quote below.&lt;br /&gt;&lt;br /&gt;###&lt;br /&gt;&lt;br /&gt;&lt;span&gt;1. My understanding that the order to execute first is not decided, is it correct?&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(Processing of messages or relaying of messages)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; Even in that case, both processes will be performed?&lt;br /&gt;&lt;br /&gt;2. If an interrupt with the same priority occurs while processing in the interrupt handler,&lt;br /&gt;&amp;nbsp; &amp;nbsp; will interrupt processing that occurs later be on hold?&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; In other words, will interrupt processing that occurs later be executed&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; after the current interrupt handler has ended?&lt;br /&gt;&lt;br /&gt;By the way, in the light_example example, what is the priority of mesh interrupts?&lt;br /&gt;I think the priority is &amp;quot;0&amp;quot;. Does that mean not?&lt;br /&gt;The timer interrupt priority is set to LOWEST (7).&lt;br /&gt;&lt;br /&gt;Although it is not intended, if you can block mesh interrupts,&amp;nbsp;&lt;br /&gt;do you think that blocking mesh interrupts is not a problem&amp;nbsp;&lt;br /&gt;if it is an algorithm that can collect data in multiple communications?&lt;br /&gt;&lt;br /&gt;I don&amp;#39;t want to do this now because using the app_scheduler is likely to result in many system changes.&lt;br /&gt;I would like to consider again at the timing of the big update,&amp;nbsp;&lt;br /&gt;so please inform me about how app_scheduler works and how to use it.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;###&lt;br /&gt;&lt;br /&gt;I think that it is related to my first question, so I do not want to launch a new thread.&lt;br /&gt;&lt;br /&gt;I&amp;nbsp;look forward to your answer.&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Wataru&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: About timing in mesh processing</title><link>https://devzone.nordicsemi.com/thread/183509?ContentTypeID=1</link><pubDate>Wed, 24 Apr 2019 13:30:05 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9a40fb76-d3dd-481c-ac7a-535e7be1defc</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi Wataru&lt;/p&gt;
&lt;p&gt;Yes, that is the same information. If you change the settings in SES and recompile you should see the values in the map file change.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;quot;BTW,&amp;nbsp;can you answer another question on this thread?&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Which question would that be?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Edit: If you have a new question not directly related I would suggest opening a new thread. In particular since I don&amp;#39;t have a lot of experience with the mesh SDK ;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Best regards&lt;br /&gt;Torbjørn&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: About timing in mesh processing</title><link>https://devzone.nordicsemi.com/thread/183281?ContentTypeID=1</link><pubDate>Wed, 24 Apr 2019 00:37:11 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9a62ad8d-8582-436a-a3ad-30185da1de97</guid><dc:creator>wataru_m</dc:creator><description>&lt;p&gt;HI,&amp;nbsp;&lt;span&gt;Torbj&amp;oslash;rn&lt;br /&gt;&lt;br /&gt;Thanks for your reply.&lt;br /&gt;&lt;br /&gt;Is that the information you gave me is the same as the one described in the map file?&lt;br /&gt;(I attach it below. )&lt;br /&gt;&lt;img alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/320x240/__key/communityserver-discussions-components-files/4/map_5F00_file.png" /&gt;&lt;br /&gt;&lt;br /&gt;BTW,&amp;nbsp;can you answer another question on this thread?&lt;br /&gt;&lt;br /&gt;Best regards&lt;br /&gt;Wataru&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: About timing in mesh processing</title><link>https://devzone.nordicsemi.com/thread/183105?ContentTypeID=1</link><pubDate>Tue, 23 Apr 2019 12:05:53 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0fb75e29-e2b2-454c-ab77-be9a6a9324d1</guid><dc:creator>ovrebekk</dc:creator><description>&lt;p&gt;Hi Wataru&lt;/p&gt;
&lt;p&gt;To check the size of your heap and stack you should open the project options in Segger Embedded Studio, select the &lt;em&gt;&amp;#39;common&amp;#39;&lt;/em&gt; configuration, and open the &lt;em&gt;&amp;#39;Runtime Memory Area&amp;#39;&lt;/em&gt; section as shown in the below screenshot:&lt;img src="https://devzone.nordicsemi.com/resized-image/__size/320x240/__key/support-attachments/beef5d1b77644c448dabff31668f3a47-fe451020bb2f47379d346eaedfd6bd87/ses_5F00_settings.PNG" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;Best regards&lt;br /&gt;Torbjørn&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: About timing in mesh processing</title><link>https://devzone.nordicsemi.com/thread/182572?ContentTypeID=1</link><pubDate>Wed, 17 Apr 2019 10:47:14 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:71ed564b-2ba9-49ba-a609-d8686d67263e</guid><dc:creator>wataru_m</dc:creator><description>&lt;p&gt;Hi, &lt;br /&gt;&lt;br /&gt;Please let me ask another question related to it.&lt;br /&gt;&lt;br /&gt;In the project I wrote,&lt;br /&gt;How can I check stack memory and heap memory respectively?&lt;br /&gt;I want to know these addresses and sizes.&lt;br /&gt;&lt;br /&gt;BR,&lt;br /&gt;Wataru&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: About timing in mesh processing</title><link>https://devzone.nordicsemi.com/thread/181971?ContentTypeID=1</link><pubDate>Mon, 15 Apr 2019 01:32:08 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9e59270b-ec40-48cc-b92b-df969b19a8fd</guid><dc:creator>wataru_m</dc:creator><description>&lt;p&gt;&lt;span style="vertical-align:inherit;"&gt;&lt;span style="vertical-align:inherit;"&gt;&lt;span style="vertical-align:inherit;"&gt;&lt;span style="vertical-align:inherit;"&gt;Hi, Ovrebekk&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="vertical-align:inherit;"&gt;&lt;span style="vertical-align:inherit;"&gt;Thanks for your reply. And sorry for the late my reply.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="vertical-align:inherit;"&gt;&lt;span style="vertical-align:inherit;"&gt;1. My understanding that the order to execute first is not decided, is it correct?&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(Processing of messages or relaying of messages)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="vertical-align:inherit;"&gt;&lt;span style="vertical-align:inherit;"&gt;&amp;nbsp; &amp;nbsp; Even in that case, both processes will be performed?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="vertical-align:inherit;"&gt;&lt;span style="vertical-align:inherit;"&gt;2. If an interrupt with the same priority occurs while processing in the interrupt handler,&lt;br /&gt;&amp;nbsp; &amp;nbsp; will interrupt processing that occurs later be on hold?&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="vertical-align:inherit;"&gt;&lt;span style="vertical-align:inherit;"&gt;&amp;nbsp; &amp;nbsp; In other words, will interrupt processing that occurs later be executed &lt;br /&gt;&amp;nbsp; &amp;nbsp; after the current interrupt handler has ended?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="vertical-align:inherit;"&gt;&lt;span style="vertical-align:inherit;"&gt;By the way, in the light_example example, what is the priority of mesh interrupts?&lt;br /&gt;I think the priority is &amp;quot;0&amp;quot;. Does that mean not?&lt;br /&gt;The timer interrupt priority is set to LOWEST (7).&lt;br /&gt;&lt;br /&gt;Although it is not intended, if you can block mesh interrupts, &lt;br /&gt;do you think that blocking mesh interrupts is not a problem &lt;br /&gt;if it is an algorithm that can collect data in multiple communications?&lt;br /&gt;&lt;br /&gt;I don&amp;#39;t want to do this now because using the app_scheduler is likely to result in many system changes.&lt;br /&gt;I would like to consider again at the timing of the big update, &lt;br /&gt;so please inform me about how app_scheduler works and how to use it.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Best regards&lt;br /&gt;Wataru&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>