NRF24L01 + Problema IRQ

0

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

    
pregunta Ankit

1 respuesta

1

Resuelto. El problema fue que el NRF24L01 + se estaba reiniciando durante TX (debido a un pico de alimentación, creo). Al agregar un límite de 1uf entre 3.3v y GND se solucionó el problema.

    
respondido por el Ankit

Lea otras preguntas en las etiquetas