Working versione for L-tek FF1705
Diff: OneWire.h
- Revision:
- 12:27a1b359b95c
- Parent:
- 11:bc8ed7280966
--- a/OneWire.h Sun Jan 27 18:01:19 2019 +0000
+++ b/OneWire.h Sun Mar 10 13:17:38 2019 +0000
@@ -5,8 +5,8 @@
#include <mbed.h>
#if defined(TARGET_STM)
- #define MODE() output(); \
- mode(OpenDrain)
+ #define MODE() output(); \
+ mode(OpenDrain)
#define INPUT() (*gpio.reg_set = gpio.mask) // write 1 to open drain
#define OUTPUT() // configured as output in the constructor and stays like that forever
#define READ() ((*gpio.reg_in & gpio.mask) != 0)
@@ -19,6 +19,28 @@
#define WRITE(x) write(x)
#endif
+#ifdef TARGET_NORDIC
+//NORDIC targets (NRF) use software delays since their ticker uses a 32kHz clock
+ static uint32_t loops_per_us = 0;
+
+ #define INIT_WAIT init_soft_delay()
+ #define WAIT_US(x) for(int cnt = 0; cnt < (x * loops_per_us) >> 5; cnt++) {__NOP(); __NOP(); __NOP();}
+
+void init_soft_delay( void ) {
+ if (loops_per_us == 0) {
+ loops_per_us = 1;
+ Timer timey;
+ timey.start();
+ ONEWIRE_DELAY_US(320000);
+ timey.stop();
+ loops_per_us = (320000 + timey.read_us() / 2) / timey.read_us();
+ }
+}
+#else
+ #define INIT_WAIT
+ #define WAIT_US(x) wait_us(x)
+#endif
+
// You can exclude certain features from OneWire. In theory, this
// might save some space. In practice, the compiler automatically
// removes unused code (technically, the linker, using -fdata-sections
@@ -155,3 +177,5 @@
};
#endif
+
+