Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/thirdpin/libopencm3_cpp_extensions.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'cm3cpp/spi.hpp')
-rw-r--r--cm3cpp/spi.hpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/cm3cpp/spi.hpp b/cm3cpp/spi.hpp
index ebe2148..eb18e4c 100644
--- a/cm3cpp/spi.hpp
+++ b/cm3cpp/spi.hpp
@@ -157,12 +157,17 @@ class Spi
uint16_t read(uint16_t data)
{
- while (!get_flag_status(Flag::TRANSMIT_BUFFER_EMPTY))
- ;
+ while (!get_flag_status(Flag::TRANSMIT_BUFFER_EMPTY)) {
+ __asm__("nop");
+ }
+
SPI_DR(_spi) = data;
- while (!get_flag_status(Flag::RECEIVE_BUFFER_NOT_EMPTY))
- ;
- return SPI_DR(_spi);
+
+ while (!get_flag_status(Flag::RECEIVE_BUFFER_NOT_EMPTY)) {
+ __asm__("nop");
+ }
+
+ return static_cast<uint16_t>(SPI_DR(_spi));
}
void set_master_mode() { spi_set_master_mode(_spi); }