two
This commit is contained in:
@@ -7,10 +7,12 @@
|
||||
import config
|
||||
import os
|
||||
import subprocess
|
||||
import _thread
|
||||
from logger_manager import logger_manager
|
||||
from maix import time as maix_time
|
||||
|
||||
_INA226_PRESENT = None
|
||||
_INA226_LOCK = _thread.allocate_lock()
|
||||
|
||||
|
||||
def _ina226_ready() -> bool:
|
||||
@@ -32,7 +34,11 @@ def write_register(reg, value):
|
||||
data = [(value >> 8) & 0xFF, value & 0xFF]
|
||||
# 某些底层驱动在失败时只打印 “write failed” 并返回 -1,而不是抛异常;
|
||||
# 为避免误判“初始化成功”导致后续 readfrom_mem SIGSEGV,这里把失败显式转成异常。
|
||||
ret = hardware_manager.bus.writeto_mem(config.INA226_ADDR, reg, bytes(data))
|
||||
_INA226_LOCK.acquire()
|
||||
try:
|
||||
ret = hardware_manager.bus.writeto_mem(config.INA226_ADDR, reg, bytes(data))
|
||||
finally:
|
||||
_INA226_LOCK.release()
|
||||
if isinstance(ret, int) and ret < 0:
|
||||
if logger:
|
||||
logger.error(f"[INA226] writeto_mem 失败: addr=0x{config.INA226_ADDR:02X} reg=0x{reg:02X} ret={ret}")
|
||||
@@ -42,7 +48,11 @@ def write_register(reg, value):
|
||||
def read_register(reg):
|
||||
"""读取INA226寄存器"""
|
||||
from hardware import hardware_manager
|
||||
data = hardware_manager.bus.readfrom_mem(config.INA226_ADDR, reg, 2)
|
||||
_INA226_LOCK.acquire()
|
||||
try:
|
||||
data = hardware_manager.bus.readfrom_mem(config.INA226_ADDR, reg, 2)
|
||||
finally:
|
||||
_INA226_LOCK.release()
|
||||
return (data[0] << 8) | data[1]
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user