diff --git a/Libraries/PeriphDrivers/Source/SPI/spi_reva1.c b/Libraries/PeriphDrivers/Source/SPI/spi_reva1.c index 57992220d47..debd3da2c91 100644 --- a/Libraries/PeriphDrivers/Source/SPI/spi_reva1.c +++ b/Libraries/PeriphDrivers/Source/SPI/spi_reva1.c @@ -18,6 +18,7 @@ * ******************************************************************************/ +#include #include #include #include @@ -43,7 +44,7 @@ typedef struct { int mtMode; int mtFirstTrans; bool txrx_req; - uint8_t req_done; + atomic_uint_fast8_t req_done; uint8_t async; bool hw_ss_control; } spi_req_reva_state_t; @@ -1301,9 +1302,9 @@ void MXC_SPI_RevA1_DMACallback(int ch, int error) for (int i = 0; i < MXC_SPI_INSTANCES; i++) { if (states[i].req != NULL) { if (states[i].channelTx == ch) { - req_done = states[i].req_done++; + req_done = atomic_fetch_add(&states[i].req_done, 1); } else if (states[i].channelRx == ch) { - req_done = states[i].req_done++; + req_done = atomic_fetch_add(&states[i].req_done, 1); //save the request temp_req = states[i].req;