Estoy probando la funcionalidad de NRF24L01 + y para mis propósitos lo he configurado como PTX, No Auto ACK.
Puedo comunicarme con el chip perfectamente y puedo configurar todos los registros (confirmado con un analizador lógico).
Sin embargo, cuando intento enviar datos, el pin IRQ nunca baja.
abajo está la configuración que utilicé para NRF24L01 +
_delay_ms(1000); //allow radio to stabilize after power on
uint8_t val[5];
val[0]=0x00; //disable AA(auto acknowledgements)
RADIO_READWRITE(W, EN_AA, val, 1);
val[0]=0x01; //number of enabled pipes. enable only daya pipe0
RADIO_READWRITE(W, EN_RXADDR, val, 1);
val[0]=0x03; //ADDRESS width setup. 5 bytes
RADIO_READWRITE(W, SETUP_AW, val, 1);
val[0]=0x01; //RF channel setup. 2401 Mhz
RADIO_READWRITE(W, RF_CH, val, 1);
val[0] = 0x07; //RF setup. 0DB max power. 1 mbps max range
RADIO_READWRITE(W, RF_SETUP, val, 1);
val[0] = 0x12; //Tx RF_ADDRESS setup. address of the PRX device
val[1] = 0x12;
val[2] = 0x12;
val[3] = 0x12;
val[4] = 0x12;
RADIO_READWRITE(W, TX_ADDR, val, 5);
val[0]=0x01; //payload width setup. 1 bytes
RADIO_READWRITE(W, RX_PW_P0, val, 1);
val[0]=0x0E; // Config register. PTX + POWER UP + 2BYTE CRC
RADIO_READWRITE(W, CONFIG, val, 1);
_delay_ms(100); //give radio time to reach STANDBY mode (CE=low);
¿Alguna idea de por qué el pin IRQ no se está agotando?
ACTUALIZAR :
También verifiqué utilizando el sondeo (bit 5 en el registro de ESTADO) usando el comando
while((RADIO_GETSTATUS()&(1<<5))==0){}
PORTB |= (1<<PB0);
y el LED no se enciende. Así que parece que los paquetes no están siendo transmitidos. ¿Podría estar equivocada mi configuración del NRF24L01 +?
Al sondear con el analizador lógico, obtengo esto
después de alternar en la línea CE para TX la carga útil, estoy sondeando continuamente el registro de estado (0x07) y obteniendo continuamente 0x0E