fix missing detection of reset during write of zero-bits

This commit is contained in:
ntruchsess 2016-02-23 17:23:54 +01:00
parent 887741a806
commit c7457d0d8a
2 changed files with 8 additions and 0 deletions

View File

@ -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_();

View File

@ -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_();