Browse Source

fix missing detection of reset during write of zero-bits

timer1
ntruchsess 8 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;
}
void OneWireSlave::beginResetDetectionSendZero_()
{
setTimerEvent_(ResetMinDuration - SendBitDuration - 50, &OneWireSlave::resetCheck_);
resetStart_ = micros() - SendBitDuration - 50;
}
void OneWireSlave::cancelResetDetection_()
{
disableTimer_();
@ -298,6 +304,7 @@ void OneWireSlave::endSendBitZero_()
onEnterInterrupt_();
releaseBus_();
beginResetDetectionSendZero_();
bitSentCallback_(false);
onLeaveInterrupt_();

1
OneWireSlave.h

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

Loading…
Cancel
Save