<?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 callback never called with Softdevice</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/64499/saadc-callback-never-called-with-softdevice</link><description>Hello, I&amp;#39;m having trouble to understand why the saadc buffer is not being filled. 
 I had already tested this functionality without the softdevice, and everything worked fine but now, with the softdevice, 
 I found that the &amp;quot;saadc_callback&amp;quot; function is</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 11 Aug 2020 12:29:19 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/64499/saadc-callback-never-called-with-softdevice" /><item><title>RE: SAADC callback never called with Softdevice</title><link>https://devzone.nordicsemi.com/thread/264048?ContentTypeID=1</link><pubDate>Tue, 11 Aug 2020 12:29:19 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:76832745-0513-4d0a-b171-5c996887402d</guid><dc:creator>f.albu</dc:creator><description>&lt;p&gt;The problem was the allocation of the PPI channels, to solve it I just modified the PPI channels that I used in another part of the program (I had configured the same channel PPI twice for different applications and with this, only the last configuration was valid)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SAADC callback never called with Softdevice</title><link>https://devzone.nordicsemi.com/thread/263754?ContentTypeID=1</link><pubDate>Mon, 10 Aug 2020 07:52:48 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:941a76b7-5b36-4383-b23e-e99fc71f235a</guid><dc:creator>Karl Ylvisaker</dc:creator><description>&lt;p&gt;Thank you for the update.&lt;br /&gt;I do not immediately see how changing the priority to&amp;nbsp;&lt;span&gt;APP_IRQ_PRIORITY_THREAD&amp;nbsp;could resolve the issue you described, but I am happy that you have found a solution to your issue.&lt;br /&gt;&lt;br /&gt;Please do not hesitate to open a new ticket if you should encounter any issues or questions in the future!&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Karl&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SAADC callback never called with Softdevice</title><link>https://devzone.nordicsemi.com/thread/263647?ContentTypeID=1</link><pubDate>Fri, 07 Aug 2020 14:09:11 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2e6e3e5c-045b-4051-a8db-feed39438dd4</guid><dc:creator>f.albu</dc:creator><description>[quote userid="87869" url="~/f/nordic-q-a/64499/saadc-callback-never-called-with-softdevice/263644"]SAMPLES_IN_BUFFER[/quote]
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;#define SAMPLES_IN_BUFFER&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;128&amp;#160;&amp;#160;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;When I activate the BLE_NUS Log in debug mode, it shows the following message:&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;&amp;lt;info&amp;gt; app: Connected to device with Nordic UART Service.
&amp;lt;debug&amp;gt; nrf_ble_gq: Processing the request queue...&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SAADC callback never called with Softdevice</title><link>https://devzone.nordicsemi.com/thread/263644?ContentTypeID=1</link><pubDate>Fri, 07 Aug 2020 14:05:53 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:cc11dc34-3e59-4a3b-b905-3c708fd6be3d</guid><dc:creator>Karl Ylvisaker</dc:creator><description>[quote user="f.albu"]I do that in the main function.[/quote]
&lt;p&gt;Thank you for confirming this.&lt;/p&gt;
[quote user="f.albu"]I think I found a solution, I changed the SAADC priority to APP_IRQ_PRIORITY_THREAD in their initialization but I don&amp;#39;t know if it&amp;#39;s the best (if it will cause problems in the future with the messages sent by ble)[/quote]
&lt;p&gt;I would not think that APP_IRQ_PRIORITY would cause the behavior you describe - SAADC initializing but buffer not getting filled, since you are using PPI.&lt;br /&gt;What is your&amp;nbsp;SAMPLES_IN_BUFFER set to?&lt;/p&gt;
[quote user="f.albu"](if it will cause problems in the future with the messages sent by ble)[/quote]
&lt;p&gt;No, you can rest assured that this will not cause any problems with the BLE communication. The SoftDevice takes priority over any application-layer task.&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Karl&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SAADC callback never called with Softdevice</title><link>https://devzone.nordicsemi.com/thread/263639?ContentTypeID=1</link><pubDate>Fri, 07 Aug 2020 13:40:03 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7074dbca-a0a9-40b3-b7e9-da1e375015ce</guid><dc:creator>f.albu</dc:creator><description>[quote userid="87869" url="~/f/nordic-q-a/64499/saadc-callback-never-called-with-softdevice/263628"]I can not see that you are calling&amp;nbsp;&lt;em&gt;nrf_drv_ppi_channel_enable&lt;br /&gt;&lt;/em&gt;anywhere. Could you confirm for me that this is in fact done?[/quote]
&lt;p&gt;I do that in the main function.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I think I found a solution, I changed the SAADC priority to APP_IRQ_PRIORITY_THREAD in their initialization but I don&amp;#39;t know if it&amp;#39;s the best (if it will cause problems in the future with the messages sent by ble)&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;    saadc_config.resolution= NRF_SAADC_RESOLUTION_12BIT;
    saadc_config.oversample= NRF_SAADC_OVERSAMPLE_16X;
    saadc_config.interrupt_priority= APP_IRQ_PRIORITY_THREAD;

    //saadc init
    err_code = nrf_drv_saadc_init(&amp;amp;saadc_config, saadc_callback);
    APP_ERROR_CHECK(err_code);&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SAADC callback never called with Softdevice</title><link>https://devzone.nordicsemi.com/thread/263628?ContentTypeID=1</link><pubDate>Fri, 07 Aug 2020 13:18:34 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6f4b5db7-6f00-44a5-b57a-36a02061667c</guid><dc:creator>Karl Ylvisaker</dc:creator><description>&lt;p&gt;Hello Fernando,&lt;br /&gt;&lt;br /&gt;Thank you for elaborating, this greatly helps my understanding of your project.&lt;br /&gt;I at least do not immediately see anything wrong with the setup and configuration of the SAADC that you have shared. However, I can not see that you are calling&amp;nbsp;&lt;em&gt;nrf_drv_ppi_channel_enable&lt;br /&gt;&lt;/em&gt;anywhere. Could you confirm for me that this is in fact done?&lt;/p&gt;
[quote user="f.albu"]First I checked through the watch that my buffer variable was not being modified, after I checked that the RESULT.PTR register is not being modified either.&amp;nbsp;[/quote]
&lt;p&gt;Is the application functioning as expected, with the exception of the SAADC?&lt;br /&gt;Are you able to verify that the device has not become stuck somewhere, as a part of the added SoftDevice code?&lt;br /&gt;For example, does the SoftDevice / BLE communication with the device function as expected?&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Karl&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SAADC callback never called with Softdevice</title><link>https://devzone.nordicsemi.com/thread/263566?ContentTypeID=1</link><pubDate>Fri, 07 Aug 2020 10:01:21 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9be94fef-d849-4769-8726-95ead40d6457</guid><dc:creator>f.albu</dc:creator><description>[quote userid="87869" url="~/f/nordic-q-a/64499/saadc-callback-never-called-with-softdevice/263199"]Please elaborate how you have verified this. If it is started, I would assume that the buffer would begin filling shortly after.[/quote]
&lt;p&gt;To verify that the SAADC was well initiated, I checked the recorders with the help of segger. As you can see in the text below.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;SAADC                                          
    TASKS_START                                
        TASKS_START                            
    TASKS_SAMPLE                               
        TASKS_SAMPLE                           
    TASKS_STOP                                 
        TASKS_STOP                             
    TASKS_CALIBRATEOFFSET                      
        TASKS_CALIBRATEOFFSET                  
    EVENTS_STARTED               0x00000000    
        EVENTS_STARTED           0             
    EVENTS_END                   0x00000001    
        EVENTS_END               1             
    EVENTS_DONE                  0x00000001    
        EVENTS_DONE              1             
    EVENTS_RESULTDONE            0x00000001    
        EVENTS_RESULTDONE        1             
    EVENTS_CALIBRATEDONE         0x00000000    
        EVENTS_CALIBRATEDONE     0             
    EVENTS_STOPPED               0x00000000    
        EVENTS_STOPPED           0             
    INTEN                        0x00000002    
        STARTED                  0             
        END                      1             
        DONE                     0             
        RESULTDONE               0             
        CALIBRATEDONE            0             
        STOPPED                  0             
        CH0LIMITH                0             
        CH0LIMITL                0             
        CH1LIMITH                0             
        CH1LIMITL                0             
        CH2LIMITH                0             
        CH2LIMITL                0             
        CH3LIMITH                0             
        CH3LIMITL                0             
        CH4LIMITH                0             
        CH4LIMITL                0             
        CH5LIMITH                0             
        CH5LIMITL                0             
        CH6LIMITH                0             
        CH6LIMITL                0             
        CH7LIMITH                0             
        CH7LIMITL                0             
    INTENSET                     0x00000002    
        STARTED                  0             
        END                      1             
        DONE                     0             
        RESULTDONE               0             
        CALIBRATEDONE            0             
        STOPPED                  0             
        CH0LIMITH                0             
        CH0LIMITL                0             
        CH1LIMITH                0             
        CH1LIMITL                0             
        CH2LIMITH                0             
        CH2LIMITL                0             
        CH3LIMITH                0             
        CH3LIMITL                0             
        CH4LIMITH                0             
        CH4LIMITL                0             
        CH5LIMITH                0             
        CH5LIMITL                0             
        CH6LIMITH                0             
        CH6LIMITL                0             
        CH7LIMITH                0             
        CH7LIMITL                0             
    INTENCLR                     0x00000002    
        STARTED                  0             
        END                      1             
        DONE                     0             
        RESULTDONE               0             
        CALIBRATEDONE            0             
        STOPPED                  0             
        CH0LIMITH                0             
        CH0LIMITL                0             
        CH1LIMITH                0             
        CH1LIMITL                0             
        CH2LIMITH                0             
        CH2LIMITL                0             
        CH3LIMITH                0             
        CH3LIMITL                0             
        CH4LIMITH                0             
        CH4LIMITL                0             
        CH5LIMITH                0             
        CH5LIMITL                0             
        CH6LIMITH                0             
        CH6LIMITL                0             
        CH7LIMITH                0             
        CH7LIMITL                0             
    STATUS                       0x00000001    
        STATUS                   1             
    ENABLE                       0x00000001    
        ENABLE                   1             
    RESOLUTION                   0x00000002    
        VAL                      2             
    OVERSAMPLE                   0x00000004    
        OVERSAMPLE               4             
    SAMPLERATE                   0x00000000    
        CC                       0x000         
        MODE                     0             
    EVENTS_CH[0].LIMITH          0x00000000    
        LIMITH                   0             
    EVENTS_CH[0].LIMITL          0x00000000    
        LIMITL                   0             
    EVENTS_CH[1].LIMITH          0x00000000    
        LIMITH                   0             
    EVENTS_CH[1].LIMITL          0x00000000    
        LIMITL                   0             
    EVENTS_CH[2].LIMITH          0x00000000    
        LIMITH                   0             
    EVENTS_CH[2].LIMITL          0x00000000    
        LIMITL                   0             
    EVENTS_CH[3].LIMITH          0x00000000    
        LIMITH                   0             
    EVENTS_CH[3].LIMITL          0x00000000    
        LIMITL                   0             
    EVENTS_CH[4].LIMITH          0x00000000    
        LIMITH                   0             
    EVENTS_CH[4].LIMITL          0x00000000    
        LIMITL                   0             
    EVENTS_CH[5].LIMITH          0x00000000    
        LIMITH                   0             
    EVENTS_CH[5].LIMITL          0x00000000    
        LIMITL                   0             
    EVENTS_CH[6].LIMITH          0x00000000    
        LIMITH                   0             
    EVENTS_CH[6].LIMITL          0x00000000    
        LIMITL                   0             
    EVENTS_CH[7].LIMITH          0x00000000    
        LIMITH                   0             
    EVENTS_CH[7].LIMITL          0x00000000    
        LIMITL                   0             
    CH[0].PSELP                  0x00000002    
        PSELP                    2             
    CH[0].PSELN                  0x00000000    
        PSELN                    0             
    CH[0].CONFIG                 0x00000501    
        RESP                     1             
        RESN                     0             
        GAIN                     5             
        REFSEL                   0             
        TACQ                     0             
        MODE                     0             
        BURST                    0             
    CH[0].LIMIT                  0x7fff8000    
        LOW                      0x8000        
        HIGH                     0x7fff        
    CH[1].PSELP                  0x00000000    
        PSELP                    0             
    CH[1].PSELN                  0x00000000    
        PSELN                    0             
    CH[1].CONFIG                 0x00020000    
        RESP                     0             
        RESN                     0             
        GAIN                     0             
        REFSEL                   0             
        TACQ                     2             
        MODE                     0             
        BURST                    0             
    CH[1].LIMIT                  0x7fff8000    
        LOW                      0x8000        
        HIGH                     0x7fff        
    CH[2].PSELP                  0x00000000    
        PSELP                    0             
    CH[2].PSELN                  0x00000000    
        PSELN                    0             
    CH[2].CONFIG                 0x00020000    
        RESP                     0             
        RESN                     0             
        GAIN                     0             
        REFSEL                   0             
        TACQ                     2             
        MODE                     0             
        BURST                    0             
    CH[2].LIMIT                  0x7fff8000    
        LOW                      0x8000        
        HIGH                     0x7fff        
    CH[3].PSELP                  0x00000000    
        PSELP                    0             
    CH[3].PSELN                  0x00000000    
        PSELN                    0             
    CH[3].CONFIG                 0x00020000    
        RESP                     0             
        RESN                     0             
        GAIN                     0             
        REFSEL                   0             
        TACQ                     2             
        MODE                     0             
        BURST                    0             
    CH[3].LIMIT                  0x7fff8000    
        LOW                      0x8000        
        HIGH                     0x7fff        
    CH[4].PSELP                  0x00000000    
        PSELP                    0             
    CH[4].PSELN                  0x00000000    
        PSELN                    0             
    CH[4].CONFIG                 0x00020000    
        RESP                     0             
        RESN                     0             
        GAIN                     0             
        REFSEL                   0             
        TACQ                     2             
        MODE                     0             
        BURST                    0             
    CH[4].LIMIT                  0x7fff8000    
        LOW                      0x8000        
        HIGH                     0x7fff        
    CH[5].PSELP                  0x00000000    
        PSELP                    0             
    CH[5].PSELN                  0x00000000    
        PSELN                    0             
    CH[5].CONFIG                 0x00020000    
        RESP                     0             
        RESN                     0             
        GAIN                     0             
        REFSEL                   0             
        TACQ                     2             
        MODE                     0             
        BURST                    0             
    CH[5].LIMIT                  0x7fff8000    
        LOW                      0x8000        
        HIGH                     0x7fff        
    CH[6].PSELP                  0x00000000    
        PSELP                    0             
    CH[6].PSELN                  0x00000000    
        PSELN                    0             
    CH[6].CONFIG                 0x00020000    
        RESP                     0             
        RESN                     0             
        GAIN                     0             
        REFSEL                   0             
        TACQ                     2             
        MODE                     0             
        BURST                    0             
    CH[6].LIMIT                  0x7fff8000    
        LOW                      0x8000        
        HIGH                     0x7fff        
    CH[7].PSELP                  0x00000000    
        PSELP                    0             
    CH[7].PSELN                  0x00000000    
        PSELN                    0             
    CH[7].CONFIG                 0x00020000    
        RESP                     0             
        RESN                     0             
        GAIN                     0             
        REFSEL                   0             
        TACQ                     2             
        MODE                     0             
        BURST                    0             
    CH[7].LIMIT                  0x7fff8000    
        LOW                      0x8000        
        HIGH                     0x7fff        
    RESULT.PTR                   0x20003c3c    
        PTR                      0x20003c3c    
    RESULT.MAXCNT                0x00000080    
        MAXCNT                   0x0080        
    RESULT.AMOUNT                0x00000080    
        AMOUNT                   0x0080        &lt;/pre&gt;&lt;/p&gt;
[quote userid="87869" url="~/f/nordic-q-a/64499/saadc-callback-never-called-with-softdevice/263199"]How are you verifying whether the buffer is being filled or not?[/quote]
&lt;p&gt;First I checked through the watch that my buffer variable was not being modified, after I checked that the RESULT.PTR register is not being modified either.&amp;nbsp;&lt;/p&gt;
[quote userid="87869" url="~/f/nordic-q-a/64499/saadc-callback-never-called-with-softdevice/263199"]And what is your intended sampling frequency?[/quote]
&lt;p&gt;I need a 10kHz sampling frequency. But as I use oversampling in x16, I set it to have a sampling frequency of 160kHz.&lt;/p&gt;
[quote userid="87869" url="~/f/nordic-q-a/64499/saadc-callback-never-called-with-softdevice/263199"]Just to make sure I have understood you intentions correctly - you successfully implemented your desired SAADC + FFT functionality in the SAADC example from the SDK, before you copied this code into the ble_app_uart_c BLE central example from the SDK. You then removed the parts of the example responsible for receiving and sending UART messages, and replaced it by your SAADC outputs instead?[/quote]
&lt;p&gt;That&amp;#39;s right, but the message I send is the value of the power of a specific frequency, which I obtain through the treatment of the signal sampled&lt;/p&gt;
[quote userid="87869" url="~/f/nordic-q-a/64499/saadc-callback-never-called-with-softdevice/263199"]So, you are receiving a signal on your SAADC input that is a mac address encoded using FFT, have I understood you correctly?[/quote]
&lt;p&gt;Is the MAC address modulated in frequency&lt;/p&gt;
[quote userid="87869" url="~/f/nordic-q-a/64499/saadc-callback-never-called-with-softdevice/263199"]I see. Have you seen&amp;nbsp;&lt;a href="https://infocenter.nordicsemi.com/topic/sdk_nrf5_v17.0.0/ble_sdk_app_multirole_lesc.html"&gt;the experimental multirole example&lt;/a&gt; from the SDK?[/quote]
&lt;p&gt;Yes, I&amp;#39;ve seen it, but for now I&amp;#39;ve left defined the roles of each module (or central or peripheral)&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Best regards,&lt;/span&gt;&lt;br /&gt;Fernando&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SAADC callback never called with Softdevice</title><link>https://devzone.nordicsemi.com/thread/263199?ContentTypeID=1</link><pubDate>Wed, 05 Aug 2020 11:33:09 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f36f1558-ded0-4ef1-b0ae-cbccfb0850fb</guid><dc:creator>Karl Ylvisaker</dc:creator><description>&lt;p&gt;Hello Fernando,&lt;/p&gt;
[quote user="f.albu"]The SAADC is successfully initialized and started.&amp;nbsp;[/quote]
&lt;p&gt;Please elaborate how you have verified this. If it is started, I would assume that the buffer would begin filling shortly after.&lt;br /&gt;How are you verifying whether the buffer is being filled or not?&amp;nbsp;&lt;br /&gt;And what is your intended sampling frequency?&lt;/p&gt;
[quote user="f.albu"]I developed this part of the program (SAADC + FFT) based on the example of saadc and fft found in SKD17. I did the tests after modifying the project, but when I tried to join with the example of ble_app_uart_c also found in SDK17 (I just removed the part that uses the uart to receive and send the data that will be sent by ble, and this part I also tested)[/quote]
&lt;p&gt;Just to make sure I have understood you intentions correctly - you successfully implemented your desired SAADC + FFT functionality in the SAADC example from the SDK, before you copied this code into the ble_app_uart_c BLE central example from the SDK. You then removed the parts of the example responsible for receiving and sending UART messages, and replaced it by your SAADC outputs instead?&lt;/p&gt;
[quote user="f.albu"]I use saadc+fft to decode one mac address and use it to connect to another ble device.[/quote]
&lt;p&gt;So, you are receiving a signal on your SAADC input that is a mac address encoded using FFT, have I understood you correctly?&lt;/p&gt;
[quote user="f.albu"]Sorry, I meant I use TIMER1 for the PPI that controls the SAADC sampling[/quote]
&lt;p&gt;Thank you for clarifying.&lt;/p&gt;
[quote user="f.albu"]The idea for the future is to have several devices that all are configured as ble peripherals and when they receive an indication (boot status) it starts to behave as a central ble to connect to a specific device (through the mac address received using saadc + fft)&amp;nbsp;to exchange data.[/quote]
&lt;p&gt;I see. Have you seen&amp;nbsp;&lt;a href="https://infocenter.nordicsemi.com/topic/sdk_nrf5_v17.0.0/ble_sdk_app_multirole_lesc.html"&gt;the experimental multirole example&lt;/a&gt; from the SDK?&lt;br /&gt;It demonstrates functionality similar to what you describe.&lt;br /&gt;&lt;br /&gt;Looking forward to resolving this issue together!&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Karl&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SAADC callback never called with Softdevice</title><link>https://devzone.nordicsemi.com/thread/263049?ContentTypeID=1</link><pubDate>Tue, 04 Aug 2020 14:38:39 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:29ca74e6-f303-4b4e-8503-49090aaab45b</guid><dc:creator>f.albu</dc:creator><description>[quote userid="87869" url="~/f/nordic-q-a/64499/saadc-callback-never-called-with-softdevice/263039"]Is the SAADC generating any errors, or is it initializing and starting successfully?[/quote]
&lt;p&gt;The SAADC is successfully initialized and started.&amp;nbsp;&lt;/p&gt;
[quote userid="87869" url="~/f/nordic-q-a/64499/saadc-callback-never-called-with-softdevice/263039"]By this, do you mean that the difference is when you enable the SoftDevice? Could you elaborate on how you included and enabled the SoftDevice?[/quote]
&lt;p&gt;I developed this part of the program (SAADC + FFT) based on the example of saadc and fft found in SKD17. I did the tests after modifying the project, but when I tried to join with the example of ble_app_uart_c also found in SDK17 (I just removed the part that uses the uart to receive and send the data that will be sent by ble, and this part I also tested) the buffer has stopped being filled.&lt;/p&gt;
&lt;p&gt;I use saadc+fft to decode one mac address and use it to connect to another ble device.&lt;/p&gt;
[quote userid="87869" url="~/f/nordic-q-a/64499/saadc-callback-never-called-with-softdevice/263039"]Do you mean that the PPI timer IS or ISNT timer1?&lt;br /&gt;Timer0 is the one used by the SoftDevice.[/quote]
&lt;p&gt;Sorry, I meant I use TIMER1 for the PPI that controls the SAADC sampling&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
[quote userid="87869" url="~/f/nordic-q-a/64499/saadc-callback-never-called-with-softdevice/263039"]Could you share the code where you configure and start the sampling?&lt;br /&gt;Please use the &amp;quot;insert -&amp;gt; Code&amp;quot; option when doing so.[/quote]
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;void timer_handler(nrf_timer_event_t event_type, void * p_context)
{
    flag_adc = true;
}


void saadc_sampling_event_init(void)
{
    ret_code_t err_code;

    err_code = nrf_drv_ppi_init();
    APP_ERROR_CHECK(err_code);

    nrf_drv_timer_config_t timer_cfg = NRF_DRV_TIMER_DEFAULT_CONFIG;
    timer_cfg.bit_width = NRF_TIMER_BIT_WIDTH_32;
    err_code = nrf_drv_timer_init(&amp;amp;m_timer, &amp;amp;timer_cfg, timer_handler);
    APP_ERROR_CHECK(err_code);

    uint32_t ticks = 100; //160000 kHz
    nrf_drv_timer_extended_compare(&amp;amp;m_timer,
                                   NRF_TIMER_CC_CHANNEL0,
                                   ticks,
                                   NRF_TIMER_SHORT_COMPARE0_CLEAR_MASK,
                                   true);
    nrf_drv_timer_enable(&amp;amp;m_timer);

    uint32_t timer_compare_event_addr = nrf_drv_timer_compare_event_address_get(&amp;amp;m_timer,
                                                                                NRF_TIMER_CC_CHANNEL0);
    uint32_t saadc_sample_task_addr   = nrf_drv_saadc_sample_task_get();

    /* setup ppi channel so that timer compare event is triggering sample task in SAADC */
    err_code = nrf_drv_ppi_channel_alloc(&amp;amp;m_ppi_channel);
    APP_ERROR_CHECK(err_code);

    err_code = nrf_drv_ppi_channel_assign(m_ppi_channel,
                                          timer_compare_event_addr,
                                          saadc_sample_task_addr);
    APP_ERROR_CHECK(err_code);
}


void saadc_callback(nrf_drv_saadc_evt_t const * p_event)
{   
    if (p_event-&amp;gt;type == NRF_DRV_SAADC_EVT_DONE)
    {
        ret_code_t err_code;
        nrf_gpio_pin_toggle(NRF_GPIO_PIN_MAP(1, 11));
        err_code = nrf_drv_saadc_buffer_convert(p_event-&amp;gt;data.done.p_buffer, SAMPLES_IN_BUFFER);
        APP_ERROR_CHECK(err_code);
        
        if(flag_buffer == 1)
        {
            flag_buffer = 0;

        }else if(flag_buffer == 0){
            flag_buffer = 1;

        }

    }

}


void saadc_init(void)
{
    ret_code_t err_code;

    //channel config
    nrf_saadc_channel_config_t channel_config;

    channel_config.resistor_p = NRF_SAADC_RESISTOR_PULLDOWN;
    channel_config.resistor_n = NRF_SAADC_RESISTOR_DISABLED;
    channel_config.gain       = NRF_SAADC_GAIN1;
    channel_config.reference  = NRF_SAADC_REFERENCE_INTERNAL;
    channel_config.acq_time   = NRF_SAADC_ACQTIME_3US;
    channel_config.mode       = NRF_SAADC_MODE_SINGLE_ENDED;
    channel_config.pin_p      = NRF_SAADC_INPUT_AIN1;
    channel_config.pin_n      = NRF_SAADC_INPUT_DISABLED;

    //saadc config
    nrf_drv_saadc_config_t saadc_config;

    saadc_config.low_power_mode = false;
    saadc_config.resolution= NRF_SAADC_RESOLUTION_12BIT;
    saadc_config.oversample= NRF_SAADC_OVERSAMPLE_16X;
    saadc_config.interrupt_priority= APP_IRQ_PRIORITY_LOW;

    //saadc init
    err_code = nrf_drv_saadc_init(&amp;amp;saadc_config, saadc_callback);
    APP_ERROR_CHECK(err_code);

    //channel init
    err_code = nrf_drv_saadc_channel_init(0, &amp;amp;channel_config);
    APP_ERROR_CHECK(err_code);

    //buffer init (duble)
    err_code = nrf_drv_saadc_buffer_convert(m_buffer_pool[0], SAMPLES_IN_BUFFER);
    APP_ERROR_CHECK(err_code);

    err_code = nrf_drv_saadc_buffer_convert(m_buffer_pool[1], SAMPLES_IN_BUFFER);
    APP_ERROR_CHECK(err_code);

    //continous mode
//    nrf_saadc_continuous_mode_enable(100); //10khz enchantilionage
//    nrf_saadc_task_trigger(NRF_SAADC_TASK_START);
//    nrf_saadc_task_trigger(NRF_SAADC_TASK_SAMPLE);
//    nrf_saadc_int_enable(NRF_SAADC_INT_END);

    saadc_sampling_event_init();

}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;The idea for the future is to have several devices that all are configured as ble peripherals and when they receive an indication (boot status) it starts to behave as a central ble to connect to a specific device (through the mac address received using saadc + fft)&amp;nbsp;to exchange data.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Best regards,&lt;/span&gt;&lt;br /&gt;Fernando&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SAADC callback never called with Softdevice</title><link>https://devzone.nordicsemi.com/thread/263039?ContentTypeID=1</link><pubDate>Tue, 04 Aug 2020 13:58:47 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8241f8a1-77e8-4e93-a421-a109fbad6de7</guid><dc:creator>Karl Ylvisaker</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
[quote user=""]I&amp;#39;m having trouble to understand why the saadc buffer is not being filled.[/quote]
&lt;p&gt;Is the SAADC generating any errors, or is it initializing and starting successfully?&lt;/p&gt;
[quote user=""]I had already tested this functionality without the softdevice, and everything worked fine but now, with the softdevice,[/quote]
&lt;p&gt;By this, do you mean that the difference is when you enable the SoftDevice? Could you elaborate on how you included and enabled the SoftDevice?&lt;/p&gt;
[quote user=""]Tested items:&lt;br /&gt;Modify saadc to continuous mode.&lt;br /&gt;Modify the saadc interrupt priority.[/quote]
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Could you share the code where you configure and start the sampling?&lt;br /&gt;Please use the &amp;quot;insert -&amp;gt; Code&amp;quot; option when doing so.&lt;/p&gt;
[quote user=""]The timer for the PPI ist the TIMER1[/quote]
&lt;p&gt;Do you mean that the PPI timer IS or ISNT timer1?&lt;br /&gt;Timer0 is the one used by the SoftDevice.&lt;br /&gt;&lt;br /&gt;Looking forward to solving this issue together!&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Karl&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>