Browse Source

fix missing detection of reset during write of zero-bits

timer1
ntruchsess 9 years ago
parent
commit
c7457d0d8a
  1. 7
      OneWireSlave.cpp
  2. 1
      OneWireSlave.h

7
OneWireSlave.cpp

@ -209,6 +209,12 @@ void OneWireSlave::beginResetDetection_()
resetStart_ = micros() - 50; resetStart_ = micros() - 50;
} }
void OneWireSlave::beginResetDetectionSendZero_()
{
setTimerEvent_(ResetMinDuration - SendBitDuration - 50, &OneWireSlave::resetCheck_);
resetStart_ = micros() - SendBitDuration - 50;
}
void OneWireSlave::cancelResetDetection_() void OneWireSlave::cancelResetDetection_()
{ {
disableTimer_(); disableTimer_();
@ -298,6 +304,7 @@ void OneWireSlave::endSendBitZero_()
onEnterInterrupt_(); onEnterInterrupt_();
releaseBus_(); releaseBus_();
beginResetDetectionSendZero_();
bitSentCallback_(false); bitSentCallback_(false);
onLeaveInterrupt_(); onLeaveInterrupt_();

1
OneWireSlave.h

@ -53,6 +53,7 @@ private:
static void beginSendBit_(bool bit, void(*completeCallback)(bool error)); static void beginSendBit_(bool bit, void(*completeCallback)(bool error));
static void beginResetDetection_(); static void beginResetDetection_();
static void beginResetDetectionSendZero_();
static void cancelResetDetection_(); static void cancelResetDetection_();
static void beginWaitReset_(); static void beginWaitReset_();

Loading…
Cancel
Save