diff --git a/Src/dw1000.c b/Src/dw1000.c index 3fe78b4ad3787ad78fc1e53fd7ae668de3f3cfd4..207394f383a2438b458c4b0b2a5c5ecdb10f90f9 100644 --- a/Src/dw1000.c +++ b/Src/dw1000.c @@ -38,6 +38,7 @@ int dw1000_sendFrame(uint8_t *payload, uint16_t len) { // set up a complete config for the register // the bits are cleared automatically after the transmission and need to be set up for the next transmission again! uint32_t sys_ctrl = 0; + dw1000Hal_readRegister(SYS_CTRL_ID, &sys_ctrl, 4); sys_ctrl |= SYS_CTRL_TRXOFF; // Immediately cancel all RX and TX operations, bring radio to IDLE state dw1000Hal_writeRegister(SYS_CTRL_ID, &sys_ctrl, 4); sys_ctrl = 0; @@ -47,7 +48,7 @@ int dw1000_sendFrame(uint8_t *payload, uint16_t len) { // TXDLYS not set -> no delayed transmission // CANSFCS not set (only useful when starting transmission before uploading payload) // TRXOFF not set (this would turn off the transmitter immediately) - sys_ctrl |= SYS_CTRL_WAIT4RESP; // turn on receiver after transmission to receive a response (ACK) + //sys_ctrl |= SYS_CTRL_WAIT4RESP; // turn on receiver after transmission to receive a response (ACK) // RXENAB not set (this would enter receive mode) // RXDLYE not set (used for delayed reception) // HRBPT not set (chooses receive buffer) diff --git a/Src/dw1000_hal.c b/Src/dw1000_hal.c index 1542cdf5d523b29dd3909c631c46780c9aff4299..a7330adc1ebd4d8805dfb2868038b189369e3df1 100644 --- a/Src/dw1000_hal.c +++ b/Src/dw1000_hal.c @@ -334,6 +334,10 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) if (event & SYS_STATUS_RXDFR){ // Frame sent event_clear |= SYS_STATUS_RXDFR; //clear interrupt + uint32_t sys_ctrl = 0; + dw1000Hal_readRegisterFromIsr(SYS_CTRL_ID, (uint8_t*)&sys_ctrl, SYS_CTRL_LEN); // switch to rx mode + sys_ctrl |= SYS_CTRL_RXENAB; + dw1000Hal_writeRegisterFromIsr(SYS_CTRL_ID, (uint8_t*)&sys_ctrl, SYS_CTRL_LEN); } if (event & SYS_STATUS_CLKPLL_LL){ // Frame sent