mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-08 00:39:50 +03:00
onewire for esp32 improved, retry for sensors
This commit is contained in:
@@ -161,7 +161,11 @@ void OneWire::begin(uint8_t pin) {
|
||||
//
|
||||
// Returns 1 if a device asserted a presence pulse, 0 otherwise.
|
||||
//
|
||||
#ifdef ARDUINO_ARCH_ESP32
|
||||
uint8_t IRAM_ATTR OneWire::reset(void) {
|
||||
#else
|
||||
uint8_t OneWire::reset(void) {
|
||||
#endif
|
||||
IO_REG_TYPE mask IO_REG_MASK_ATTR = bitmask;
|
||||
volatile IO_REG_TYPE * reg IO_REG_BASE_ATTR = baseReg;
|
||||
uint8_t r;
|
||||
@@ -195,7 +199,11 @@ uint8_t OneWire::reset(void) {
|
||||
// Write a bit. Port and bit is used to cut lookup time and provide
|
||||
// more certain timing.
|
||||
//
|
||||
#ifdef ARDUINO_ARCH_ESP32
|
||||
void IRAM_ATTR OneWire::write_bit(uint8_t v) {
|
||||
#else
|
||||
void OneWire::write_bit(uint8_t v) {
|
||||
#endif
|
||||
IO_REG_TYPE mask IO_REG_MASK_ATTR = bitmask;
|
||||
volatile IO_REG_TYPE * reg IO_REG_BASE_ATTR = baseReg;
|
||||
|
||||
@@ -222,7 +230,11 @@ void OneWire::write_bit(uint8_t v) {
|
||||
// Read a bit. Port and bit is used to cut lookup time and provide
|
||||
// more certain timing.
|
||||
//
|
||||
#ifdef ARDUINO_ARCH_ESP32
|
||||
uint8_t IRAM_ATTR OneWire::read_bit(void) {
|
||||
#else
|
||||
uint8_t OneWire::read_bit(void) {
|
||||
#endif
|
||||
IO_REG_TYPE mask IO_REG_MASK_ATTR = bitmask;
|
||||
volatile IO_REG_TYPE * reg IO_REG_BASE_ATTR = baseReg;
|
||||
uint8_t r;
|
||||
@@ -473,6 +485,7 @@ bool OneWire::search(uint8_t * newAddr, bool search_mode /* = true */) {
|
||||
for (int i = 0; i < 8; i++)
|
||||
newAddr[i] = ROM_NO[i];
|
||||
}
|
||||
// depower(); // https://github.com/PaulStoffregen/OneWire/pull/80
|
||||
return search_result;
|
||||
}
|
||||
|
||||
|
||||
@@ -78,7 +78,11 @@ class OneWire {
|
||||
// Perform a 1-Wire reset cycle. Returns 1 if a device responds
|
||||
// with a presence pulse. Returns 0 if there is no device or the
|
||||
// bus is shorted or otherwise held low for more than 250uS
|
||||
#ifdef ARDUINO_ARCH_ESP32
|
||||
uint8_t IRAM_ATTR reset(void);
|
||||
#else
|
||||
uint8_t reset(void);
|
||||
#endif
|
||||
|
||||
// Issue a 1-Wire rom select command, you do the reset first.
|
||||
void select(const uint8_t rom[8]);
|
||||
@@ -101,11 +105,18 @@ class OneWire {
|
||||
|
||||
// Write a bit. The bus is always left powered at the end, see
|
||||
// note in write() about that.
|
||||
void write_bit(uint8_t v);
|
||||
#ifdef ARDUINO_ARCH_ESP32
|
||||
void IRAM_ATTR write_bit(uint8_t v);
|
||||
#else
|
||||
void write_bit(uint8_t v);
|
||||
#endif
|
||||
|
||||
// Read a bit.
|
||||
#ifdef ARDUINO_ARCH_ESP32
|
||||
uint8_t IRAM_ATTR read_bit(void);
|
||||
#else
|
||||
uint8_t read_bit(void);
|
||||
|
||||
#endif
|
||||
// Stop forcing power onto the bus. You only need to do this if
|
||||
// you used the 'power' flag to write() or used a write_bit() call
|
||||
// and aren't about to do another read or write. You would rather
|
||||
|
||||
Reference in New Issue
Block a user