@@ -352,8 +352,12 @@ def change_address(self, new_address: int) -> bool:
352
352
def _read_register8 (self , addr : int ) -> int :
353
353
# Read and return a byte from the specified 8-bit register address.
354
354
with self ._device as device :
355
+ device .write (bytes ([addr & 0xFF ]))
355
356
result = bytearray (1 )
356
- device .write_then_readinto (bytes ([addr & 0xFF ]), result )
357
+ # write_then_readinto() does not work reliably,
358
+ # so do explicit write followed by read into
359
+ # device.write_then_readinto(bytes([addr & 0xFF]), result)
360
+ device .readinto (result )
357
361
if self ._debug :
358
362
print ("$%02X => %s" % (addr , [hex (i ) for i in result ]))
359
363
return result [0 ]
@@ -368,8 +372,12 @@ def _write_register8(self, addr: int, value: int) -> None:
368
372
def _read_register16 (self , addr : int ) -> int :
369
373
# Read and return a 16-bit value from the specified 8-bit register address.
370
374
with self ._device as device :
375
+ device .write (bytes ([addr & 0xFF ]))
371
376
result = bytearray (2 )
372
- device .write_then_readinto (bytes ([addr & 0xFF ]), result )
377
+ # write_then_readinto() does not work reliably,
378
+ # so do explicit write followed by read into
379
+ # device.write_then_readinto(bytes([addr & 0xFF]), result)
380
+ device .readinto (result )
373
381
if self ._debug :
374
382
print ("$%02X => %s" % (addr , [hex (i ) for i in result ]))
375
383
return (result [1 ] << 8 ) | result [0 ]
0 commit comments