diff --git a/src/shared/drivers/WIZ5500/WIZ5500.cpp b/src/shared/drivers/WIZ5500/WIZ5500.cpp index d3a9a38f329fa5019ae7999763ed0124c5af2d5a..afc31070efe1c1893112e70a7ca645ad21ab959a 100644 --- a/src/shared/drivers/WIZ5500/WIZ5500.cpp +++ b/src/shared/drivers/WIZ5500/WIZ5500.cpp @@ -135,8 +135,6 @@ void Wiz5500::handleINTn() { miosix::Scheduler::IRQfindNextThread(); } - - intn_thread = nullptr; } } @@ -445,7 +443,9 @@ TimedWaitResult Wiz5500::waitForINTn(Lock<FastMutex>& l, long long until) Unlock<FastMutex> ul(l); FastInterruptDisableLock il; + intn_thread = Thread::IRQgetCurrentThread(); + while (intn.value() != 0 && result == TimedWaitResult::NoTimeout) { long long now = getTime(); @@ -460,6 +460,10 @@ TimedWaitResult Wiz5500::waitForINTn(Lock<FastMutex>& l, long long until) result = Thread::IRQenableIrqAndTimedWait(il, until); } } + + // Set the thread pointer to null just to make sure + intn_thread = nullptr; + return result; }