diff --git a/lib/onewire/one_wire_slave.cpp b/lib/onewire/one_wire_slave.cpp index 51e0b0e6..0da51318 100644 --- a/lib/onewire/one_wire_slave.cpp +++ b/lib/onewire/one_wire_slave.cpp @@ -256,24 +256,23 @@ bool OneWireSlave::bus_start(void) { if(device == nullptr) { result = false; } else { + __disable_irq(); pin_init_opendrain_in_isr_ctx(); error = OneWireSlaveError::NO_ERROR; if(show_presence()) { - __disable_irq(); - // TODO think about multiple command cycles receive_and_process_cmd(); result = (error == OneWireSlaveError::NO_ERROR || error == OneWireSlaveError::INCORRECT_ONEWIRE_CMD); - __enable_irq(); } else { result = false; } pin_init_interrupt_in_isr_ctx(); + __enable_irq(); } return result; diff --git a/lib/onewire/one_wire_timings.h b/lib/onewire/one_wire_timings.h index b5290077..7ef30a0e 100644 --- a/lib/onewire/one_wire_timings.h +++ b/lib/onewire/one_wire_timings.h @@ -41,7 +41,7 @@ public: constexpr static const OneWiteTimeType RESET_MAX = 960; constexpr static const OneWiteTimeType PRESENCE_TIMEOUT = 20; - constexpr static const OneWiteTimeType PRESENCE_MIN = 160; + constexpr static const OneWiteTimeType PRESENCE_MIN = 100; constexpr static const OneWiteTimeType PRESENCE_MAX = 480; constexpr static const OneWiteTimeType MSG_HIGH_TIMEOUT = 15000;