<?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>nRF24L01+: Not Receiving ACK at PTX</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/3354/nrf24l01-not-receiving-ack-at-ptx</link><description>Hi,
I am interfacing a TI TM4C123 microcontroller to the AddiCore nRF24L01+ Transceiver Module. I can consistently transmit and receive data with the microcontroller/nRF24L01+ modules, however the PTX does not receive the ACK from PRX. Using UARTs connected</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 06 Aug 2014 10:56:23 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/3354/nrf24l01-not-receiving-ack-at-ptx" /><item><title>RE: nRF24L01+: Not Receiving ACK at PTX</title><link>https://devzone.nordicsemi.com/thread/12225?ContentTypeID=1</link><pubDate>Wed, 06 Aug 2014 10:56:23 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7a780f40-e791-4bab-bd0a-9b335d1c101c</guid><dc:creator>ab</dc:creator><description>&lt;p&gt;I simplified the code so that only two registers are modified during configuration: CONFIG and RX_PW_P0.  All other registers are their default values.  TX_ADDR and RX_ADDR_P0 should be 0xE7E7E7E7E7.  I still get the same results; no ACK.  Do you know where I can find generic C code for the nRF24L01+ that I can try with the TI microcontroller?
Thanks, for your help.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF24L01+: Not Receiving ACK at PTX</title><link>https://devzone.nordicsemi.com/thread/12224?ContentTypeID=1</link><pubDate>Tue, 05 Aug 2014 11:36:23 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:30d8f311-1727-4930-a17e-359ddab1b894</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;You&amp;#39;re pushing alot of arguments into the init function &amp;quot;nrf24l01_initialize&amp;quot;. I would strongly recommend using a pointer to a struct to pass to the function instead. This will make the code alot more readable.&lt;/p&gt;
&lt;p&gt;Is define nrf24l01_TX_ADDR_Bx_DEFAULT_VAL equal to nrf24l01_RX_ADDR_P0_Bx_DEFAULT_VAL defines?
The TX_ADDR must be equal to PIPE0 in order for the autoacking to work.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF24L01+: Not Receiving ACK at PTX</title><link>https://devzone.nordicsemi.com/thread/12223?ContentTypeID=1</link><pubDate>Mon, 04 Aug 2014 12:05:49 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0660766c-1a16-4096-8556-ae5406439161</guid><dc:creator>ab</dc:creator><description>&lt;p&gt;Hi Hakon,
I found code for the nRF24L01 on the web, written by Brennen Ball.  I had to make a few changes port the code to the TI microcontroller but most of the original code is still used.
Thanks,
Al&lt;/p&gt;
&lt;p&gt;void nrf24l01_initialize_debug(bool rx, unsigned char p0_payload_width, bool enable_auto_ack)
{
unsigned char config;
unsigned char en_aa;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;config = nrf24l01_CONFIG_DEFAULT_VAL | nrf24l01_CONFIG_PWR_UP | nrf24l01_CONFIG_CRCO;

if(enable_auto_ack != false)
    en_aa = nrf24l01_EN_AA_ENAA_P0;
else
    en_aa = nrf24l01_EN_AA_ENAA_NONE;

if(rx == true)
    config = config | nrf24l01_CONFIG_PRIM_RX;
    
nrf24l01_initialize(config, 
                    true,
                    en_aa, 
                    nrf24l01_EN_RXADDR_DEFAULT_VAL, 
                    nrf24l01_SETUP_AW_DEFAULT_VAL, 
                    nrf24l01_SETUP_RETR_DEFAULT_VAL, 
                    nrf24l01_RF_CH_DEFAULT_VAL, 
                    nrf24l01_RF_SETUP_DEFAULT_VAL,  
                    NULL, 
                    NULL, 
                    nrf24l01_RX_ADDR_P2_DEFAULT_VAL, 
                    nrf24l01_RX_ADDR_P3_DEFAULT_VAL, 
                    nrf24l01_RX_ADDR_P4_DEFAULT_VAL, 
                    nrf24l01_RX_ADDR_P5_DEFAULT_VAL, 
                    NULL, 
                    p0_payload_width, 
                    nrf24l01_RX_PW_P1_DEFAULT_VAL, 
                    nrf24l01_RX_PW_P2_DEFAULT_VAL, 
                    nrf24l01_RX_PW_P3_DEFAULT_VAL, 
                    nrf24l01_RX_PW_P4_DEFAULT_VAL, 
                    nrf24l01_RX_PW_P5_DEFAULT_VAL);  }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;void nrf24l01_initialize(unsigned char config,
unsigned char opt_rx_active_mode,&lt;br /&gt;
unsigned char en_aa,
unsigned char en_rxaddr,
unsigned char setup_aw,
unsigned char setup_retr,
unsigned char rf_ch,
unsigned char rf_setup,
unsigned char * rx_addr_p0,
unsigned char * rx_addr_p1,
unsigned char rx_addr_p2,
unsigned char rx_addr_p3,
unsigned char rx_addr_p4,
unsigned char rx_addr_p5,
unsigned char * tx_addr,
unsigned char rx_pw_p0,
unsigned char rx_pw_p1,
unsigned char rx_pw_p2,
unsigned char rx_pw_p3,
unsigned char rx_pw_p4,
unsigned char rx_pw_p5)
{
unsigned char data[5];&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;data[0] = en_aa;
nrf24l01_write_register(nrf24l01_EN_AA, data, 1);

data[0] = en_rxaddr;
nrf24l01_write_register(nrf24l01_EN_RXADDR, data, 1);

data[0] = setup_aw;
nrf24l01_write_register(nrf24l01_SETUP_AW, data, 1);

data[0] = setup_retr;
nrf24l01_write_register(nrf24l01_SETUP_RETR, data, 1);

data[0] = rf_ch;
nrf24l01_write_register(nrf24l01_RF_CH, data, 1);
	
data[0] = rf_setup;
nrf24l01_write_register(nrf24l01_RF_SETUP, data, 1);
	
if(rx_addr_p0 != NULL)
    nrf24l01_set_rx_addr(rx_addr_p0, 5, 0);
else
{
    data[0] = nrf24l01_RX_ADDR_P0_B0_DEFAULT_VAL;
    data[1] = nrf24l01_RX_ADDR_P0_B1_DEFAULT_VAL;
    data[2] = nrf24l01_RX_ADDR_P0_B2_DEFAULT_VAL;
    data[3] = nrf24l01_RX_ADDR_P0_B3_DEFAULT_VAL;
    data[4] = nrf24l01_RX_ADDR_P0_B4_DEFAULT_VAL;
    
    nrf24l01_set_rx_addr(data, 5, 0);
}

if(rx_addr_p1 != NULL)
    nrf24l01_set_rx_addr(rx_addr_p1, 5, 1);
else
{
    data[0] = nrf24l01_RX_ADDR_P1_B0_DEFAULT_VAL;
    data[1] = nrf24l01_RX_ADDR_P1_B1_DEFAULT_VAL;
    data[2] = nrf24l01_RX_ADDR_P1_B2_DEFAULT_VAL;
    data[3] = nrf24l01_RX_ADDR_P1_B3_DEFAULT_VAL;
    data[4] = nrf24l01_RX_ADDR_P1_B4_DEFAULT_VAL;
    
    nrf24l01_set_rx_addr(data, 5, 1);
}

data[0] = rx_addr_p2;
nrf24l01_set_rx_addr(data, 1, 2);

data[0] = rx_addr_p3;
nrf24l01_set_rx_addr(data, 1, 3);

data[0] = rx_addr_p4;
nrf24l01_set_rx_addr(data, 1, 4);

data[0] = rx_addr_p5;
nrf24l01_set_rx_addr(data, 1, 5);

if(tx_addr != NULL)
    nrf24l01_set_tx_addr(tx_addr, 5);
else
{
    data[0] = nrf24l01_TX_ADDR_B0_DEFAULT_VAL;
    data[1] = nrf24l01_TX_ADDR_B1_DEFAULT_VAL;
    data[2] = nrf24l01_TX_ADDR_B2_DEFAULT_VAL;
    data[3] = nrf24l01_TX_ADDR_B3_DEFAULT_VAL;
    data[4] = nrf24l01_TX_ADDR_B4_DEFAULT_VAL;
    
    nrf24l01_set_tx_addr(data, 5);
}

data[0] = rx_pw_p0;
nrf24l01_write_register(nrf24l01_RX_PW_P0, data, 1);
	
data[0] = rx_pw_p1;
nrf24l01_write_register(nrf24l01_RX_PW_P1, data, 1);
	
data[0] = rx_pw_p2;
nrf24l01_write_register(nrf24l01_RX_PW_P2, data, 1);
	
data[0] = rx_pw_p3;
nrf24l01_write_register(nrf24l01_RX_PW_P3, data, 1);
	
data[0] = rx_pw_p4;
nrf24l01_write_register(nrf24l01_RX_PW_P4, data, 1);
	
data[0] = rx_pw_p5;
nrf24l01_write_register(nrf24l01_RX_PW_P5, data, 1);
	
if((config &amp;amp; nrf24l01_CONFIG_PWR_UP) != 0)
    nrf24l01_power_up_param(opt_rx_active_mode, config);
else
    nrf24l01_power_down_param(config);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;}&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF24L01+: Not Receiving ACK at PTX</title><link>https://devzone.nordicsemi.com/thread/12222?ContentTypeID=1</link><pubDate>Mon, 04 Aug 2014 07:51:36 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:762c622e-ce56-4405-8597-f1a2fd843ca4</guid><dc:creator>H&amp;#229;kon Alseth</dc:creator><description>&lt;p&gt;It would be great to have a look at the init of the L01+. Could you attach this?&lt;/p&gt;
&lt;p&gt;One of the &amp;quot;normal&amp;quot; issues when the PRX receives the payload w/o issues, and the PTX does not receive the ACK is that the PTXs pipes are not correctly set up.
On the PTX you need to set TX_PIPE equal to PIPE0 in order for auto-ACKing to work properly.&lt;/p&gt;
&lt;p&gt;cheers,
Håkon&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>