Skip to content
Snippets Groups Projects
Commit f4f64e01 authored by Georg von Zengen's avatar Georg von Zengen
Browse files

dw1000: splitted exti callback

moved the exti callback to freertos.c. From there it now calls the
callback inside the dw1000Hal. Now it is possible to use other ext
interrupts for different purposes.
parent 9e4ba387
No related branches found
No related tags found
No related merge requests found
......@@ -18,4 +18,5 @@ int dw1000Hal_writeDmaRegister(uint8_t regID, uint8_t *src, uint16_t len, void (
void vTaskDW1000HAL(void *pvParameters);
void dw1000Hal_extiCallback(void);
#endif /*__ dw1000_hal_H */
......@@ -321,34 +321,29 @@ void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
}
}
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
void dw1000Hal_extiCallback(void)
{
if (GPIO_PIN_8 == GPIO_Pin){
uint64_t event = 0;
uint64_t event_clear = 0;
dw1000Hal_readRegisterFromIsr(SYS_STATUS_ID, (uint8_t*)&event, SYS_STATUS_LEN);
if (event & SYS_STATUS_TXFRS){ // Frame sent
event_clear |= SYS_STATUS_TXFRS ; //clear interrupt
}
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
event_clear |= SYS_STATUS_CLKPLL_LL;
if (event & SYS_STATUS_CPLOCK){
event_clear |= SYS_STATUS_CPLOCK;
//trace_printf("fuu\n");
}
uint64_t event = 0;
uint64_t event_clear = 0;
dw1000Hal_readRegisterFromIsr(SYS_STATUS_ID, (uint8_t*)&event, SYS_STATUS_LEN);
if (event & SYS_STATUS_TXFRS){ // Frame sent
event_clear |= SYS_STATUS_TXFRS ; //clear interrupt
}
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
event_clear |= SYS_STATUS_CLKPLL_LL;
if (event & SYS_STATUS_CPLOCK){
event_clear |= SYS_STATUS_CPLOCK;
//trace_printf("fuu\n");
}
dw1000Hal_writeRegisterFromIsr(SYS_STATUS_ID, (uint8_t*)&event_clear, SYS_STATUS_LEN);
}
dw1000Hal_writeRegisterFromIsr(SYS_STATUS_ID, (uint8_t*)&event_clear, SYS_STATUS_LEN);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment