Skip to content

Commit 03e6f71

Browse files
committed
Re-initialise IRQ at end of ISR (via reference)
1 parent d899710 commit 03e6f71

File tree

2 files changed

+4
-6
lines changed

2 files changed

+4
-6
lines changed

i2c/asi2c.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ class Responder(Channel):
160160
def __init__(self, i2c, pin, pinack, verbose=True):
161161
super().__init__(i2c, pinack, pin, verbose, self.rxbufsize)
162162
self._handle_rxd_ref = self._handle_rxd # Alocate RAM here
163-
self._re_enable_ref = self._re_enable
163+
self._handler_ref = self._handler
164164
loop = asyncio.get_event_loop()
165165
loop.create_task(self._run())
166166

@@ -171,9 +171,6 @@ async def _run(self):
171171
await asyncio.sleep(1)
172172
gc.collect()
173173

174-
def _re_enable(self, _):
175-
self.rem.irq(handler = self._handler, trigger = machine.Pin.IRQ_RISING, hard = True)
176-
177174
# Request was received: immediately read payload size, then payload
178175
# On Pyboard blocks for 380μs to 1.2ms for small amounts of data
179176
def _handler(self, _, sn=bytearray(2), txnull=bytearray(2)):
@@ -218,5 +215,5 @@ def _handler(self, _, sn=bytearray(2), txnull=bytearray(2)):
218215
self.own(0)
219216
self.waitfor(0)
220217
self._txdone() # Invalidate source
221-
schedule(self._re_enable_ref, 0)
218+
self.rem.irq(handler = self._handler_ref, trigger = machine.Pin.IRQ_RISING, hard = True)
222219
# print('Time: ', utime.ticks_diff(utime.ticks_us(), tstart))

i2c/asi2c_i.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,9 @@ async def _run(self):
8585
except OSError:
8686
break
8787
await asyncio.sleep_ms(Initiator.t_poll)
88-
self.block_max = max(self.block_max, t) # self measurement
8988
self.block_cnt += 1
89+
if self.block_cnt > 2: # Avoid any start-up effects
90+
self.block_max = max(self.block_max, t) # self measurement
9091
self.block_sum += t
9192
self.nboots += 1
9293
if self.reset is None: # No means of recovery

0 commit comments

Comments
 (0)