<?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>SAADC reinit crash device</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/33815/saadc-reinit-crash-device</link><description>Hi 
 I am running saadc battery measurement using the refernce code. 
 When I run the adc_configure() I have about 500uA consumption 
 then According to this thread I run this code (below 3 lines) after I read the battery level in the saadc_event_handler</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 27 Apr 2018 11:39:25 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/33815/saadc-reinit-crash-device" /><item><title>RE: SAADC reinit crash device</title><link>https://devzone.nordicsemi.com/thread/130096?ContentTypeID=1</link><pubDate>Fri, 27 Apr 2018 11:39:25 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4d20923f-926b-4da1-b429-f88d806b0556</guid><dc:creator>haakonsh</dc:creator><description>&lt;p&gt;I&amp;#39;ll test your code when I get back to work on Wednesday.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SAADC reinit crash device</title><link>https://devzone.nordicsemi.com/thread/129930?ContentTypeID=1</link><pubDate>Thu, 26 Apr 2018 11:49:25 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0953d81a-e42d-4d2f-bcfd-b4d2e4822ee1</guid><dc:creator>Yaniv Reibenbach</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;I am doing that,&amp;nbsp;Sorry didn&amp;#39;t copy that part&lt;/p&gt;
&lt;p&gt;still crashing after second init (not after uinint)&lt;/p&gt;
&lt;p&gt;Any advice?&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;void saadc_event_handler(nrf_drv_saadc_evt_t const * p_event)&lt;br /&gt;{&lt;br /&gt; if (p_event-&amp;gt;type == NRF_DRV_SAADC_EVT_DONE)&lt;br /&gt; {&lt;br /&gt; nrf_saadc_value_t adc_result;&lt;br /&gt; uint16_t batt_lvl_in_milli_volts;&lt;br /&gt; uint8_t percentage_batt_lvl;&lt;br /&gt; uint32_t err_code;&lt;/p&gt;
&lt;p&gt;adc_result = p_event-&amp;gt;data.done.p_buffer[0];&lt;/p&gt;
&lt;p&gt;err_code = nrf_drv_saadc_buffer_convert(p_event-&amp;gt;data.done.p_buffer, 1);&lt;br /&gt; APP_ERROR_CHECK(err_code);&lt;/p&gt;
&lt;p&gt;batt_lvl_in_milli_volts = ADC_RESULT_IN_MILLI_VOLTS(adc_result) +&lt;br /&gt; DIODE_FWD_VOLT_DROP_MILLIVOLTS;&lt;br /&gt; percentage_batt_lvl = battery_level_in_percent(batt_lvl_in_milli_volts);&lt;br /&gt; if (batt_lvl_in_milli_volts &amp;gt; 0x0C40) //&amp;gt; 2.9V&lt;br /&gt; batt_lvl_in_milli_volts2 = 0x30;&lt;br /&gt; if (batt_lvl_in_milli_volts &amp;lt; 0x0C40) //2.5V&lt;br /&gt; batt_lvl_in_milli_volts2 = 0x25;&lt;br /&gt; if (batt_lvl_in_milli_volts &amp;lt; 0x0834) //&amp;lt;2.1V&lt;br /&gt; batt_lvl_in_milli_volts2 = 0x20;&lt;br /&gt;&lt;br /&gt; nrf_drv_saadc_uninit();&lt;br /&gt; NRF_SAADC-&amp;gt;INTENCLR = (SAADC_INTENCLR_END_Clear &amp;lt;&amp;lt; SAADC_INTENCLR_END_Pos);&lt;br /&gt; NVIC_ClearPendingIRQ(SAADC_IRQn);&lt;br /&gt; }&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;void adc_configure(void)&lt;br /&gt;{&lt;br /&gt; ret_code_t err_code = nrf_drv_saadc_init(NULL, saadc_event_handler);&lt;br /&gt; APP_ERROR_CHECK(err_code);&lt;/p&gt;
&lt;p&gt;nrf_saadc_channel_config_t config =&lt;br /&gt; NRF_DRV_SAADC_DEFAULT_CHANNEL_CONFIG_SE(NRF_SAADC_INPUT_VDD);&lt;br /&gt; err_code = nrf_drv_saadc_channel_init(0, &amp;amp;config);&lt;br /&gt; APP_ERROR_CHECK(err_code);&lt;/p&gt;
&lt;p&gt;err_code = nrf_drv_saadc_buffer_convert(&amp;amp;adc_buf[0], 1);&lt;br /&gt; APP_ERROR_CHECK(err_code);&lt;/p&gt;
&lt;p&gt;err_code = nrf_drv_saadc_buffer_convert(&amp;amp;adc_buf[1], 1);&lt;br /&gt; APP_ERROR_CHECK(err_code);&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SAADC reinit crash device</title><link>https://devzone.nordicsemi.com/thread/129925?ContentTypeID=1</link><pubDate>Thu, 26 Apr 2018 11:29:51 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7ac5dc88-8c7b-4004-b4b1-bc63264c2bc4</guid><dc:creator>haakonsh</dc:creator><description>&lt;p&gt;Hey Yaniv,&lt;/p&gt;
&lt;p&gt;You need to uninit the driver after the ADC is finished sampling, in the event handler and not in the adc_configure function.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Cheers,&lt;/p&gt;
&lt;p&gt;Håkon.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>