diff --git a/src/Makefile b/src/Makefile index 54cfb2a6d..e148b64ea 100755 --- a/src/Makefile +++ b/src/Makefile @@ -119,6 +119,9 @@ MP_CFLAGS += -I$(MP_BOARD_CONFIG_DIR) ifeq ($(MICROPY_PY_WINC1500), 1) MP_CFLAGS += -DMICROPY_PY_WINC1500=1 endif +ifeq ($(MICROPY_PY_IMU), 1) +MP_CFLAGS += -DMICROPY_PY_IMU=1 +endif OMV_CFLAGS += -I$(TOP_DIR)/$(OMV_DIR)/ OMV_CFLAGS += -I$(TOP_DIR)/$(OMV_DIR)/py/ @@ -134,6 +137,10 @@ OMV_CFLAGS += -I$(TOP_DIR)/$(WINC1500_DIR)/include/ UVC_CFLAGS = $(CFLAGS) UVC_CFLAGS += -I$(OMV_BOARD_CONFIG_DIR) UVC_CFLAGS += -I$(TOP_DIR)/$(UVC_DIR)/include/ +ifeq ($(MICROPY_PY_IMU), 1) +# UVC firmware needs the IMU driver. +UVC_CFLAGS += -DMICROPY_PY_IMU=1 +endif BOOTLDR_CFLAGS = $(CFLAGS) BOOTLDR_CFLAGS += -I$(OMV_BOARD_CONFIG_DIR) @@ -171,7 +178,9 @@ endif FIRM_OBJ += $(wildcard $(BUILD)/$(STHAL_DIR)/src/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(LEPTON_DIR)/src/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(MLX_DIR)/src/*.o) +ifeq ($(MICROPY_PY_IMU), 1) FIRM_OBJ += $(wildcard $(BUILD)/$(ST_DIR)/src/*.o) +endif ifeq ($(MICROPY_PY_WINC1500), 1) FIRM_OBJ += $(wildcard $(BUILD)/$(WINC1500_DIR)/src/*.o) endif @@ -536,7 +545,9 @@ UVC_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/img/,\ UVC_OBJ += $(wildcard $(BUILD)/$(LEPTON_DIR)/src/*.o) UVC_OBJ += $(wildcard $(BUILD)/$(MLX_DIR)/src/*.o) +ifeq ($(MICROPY_PY_IMU), 1) UVC_OBJ += $(wildcard $(BUILD)/$(ST_DIR)/src/*.o) +endif ################################################### #Export Variables @@ -572,7 +583,9 @@ FIRMWARE_OBJS: | $(BUILD) $(FW_DIR) $(MAKE) -C $(MICROPY_DIR)/ports/stm32 BUILD=$(BUILD)/$(MICROPY_DIR) BOARD=$(TARGET) DEBUG=$(DEBUG) QSTR_DEFS="$(OMV_QSTR_DEFS)" $(MAKE) -C $(LEPTON_DIR) BUILD=$(BUILD)/$(LEPTON_DIR) CFLAGS="$(CFLAGS) -MMD" $(MAKE) -C $(MLX_DIR) BUILD=$(BUILD)/$(MLX_DIR) CFLAGS="$(CFLAGS) -MMD" +ifeq ($(MICROPY_PY_IMU), 1) $(MAKE) -C $(ST_DIR) BUILD=$(BUILD)/$(ST_DIR) CFLAGS="$(CFLAGS) -MMD" +endif ifeq ($(MICROPY_PY_WINC1500), 1) $(MAKE) -C $(WINC1500_DIR) BUILD=$(BUILD)/$(WINC1500_DIR) CFLAGS="$(CFLAGS) -MMD" endif diff --git a/src/micropython b/src/micropython index 87995c9d1..39dc51098 160000 --- a/src/micropython +++ b/src/micropython @@ -1 +1 @@ -Subproject commit 87995c9d1e85591e111513bd4ae3d1fafdf4f43d +Subproject commit 39dc5109860f43166737db16cf49850fd8f07f68 diff --git a/src/omv/boards/OPENMV4/omv_boardconfig.h b/src/omv/boards/OPENMV4/omv_boardconfig.h index f5f83c9ce..9cd697667 100644 --- a/src/omv/boards/OPENMV4/omv_boardconfig.h +++ b/src/omv/boards/OPENMV4/omv_boardconfig.h @@ -49,9 +49,6 @@ #define OMV_ENABLE_MT9V034 (1) #define OMV_ENABLE_LEPTON (1) -// Enable IMU sensor -#define OMV_ENABLE_IMU (1) - // Enable WiFi debug #define OMV_ENABLE_WIFIDBG (1) diff --git a/src/omv/boards/OPENMV4/omv_boardconfig.mk b/src/omv/boards/OPENMV4/omv_boardconfig.mk index 475d7cbf3..77b5e129d 100755 --- a/src/omv/boards/OPENMV4/omv_boardconfig.mk +++ b/src/omv/boards/OPENMV4/omv_boardconfig.mk @@ -11,3 +11,4 @@ MAIN_APP_ADDR=0x08040000 FROZEN_MPY_DIR=$(TOP_DIR)/../scripts/libraries MICROPY_PY_ULAB = 1 MICROPY_PY_WINC1500 = 1 +MICROPY_PY_IMU = 1 diff --git a/src/omv/py/py_imu.c b/src/omv/py/py_imu.c index 61a292e1d..4c945a571 100644 --- a/src/omv/py/py_imu.c +++ b/src/omv/py/py_imu.c @@ -14,7 +14,7 @@ #include "py_helper.h" #include "py_imu.h" -#if defined(OMV_ENABLE_IMU) +#if MICROPY_PY_IMU typedef union { int16_t i16bit[3]; @@ -203,11 +203,8 @@ STATIC mp_obj_t py_imu_read_reg(mp_obj_t addr) } STATIC MP_DEFINE_CONST_FUN_OBJ_1(py_imu_read_reg_obj, py_imu_read_reg); -#endif - STATIC const mp_rom_map_elem_t globals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_imu) }, -#if defined(OMV_ENABLE_IMU) { MP_ROM_QSTR(MP_QSTR_acceleration_mg), MP_ROM_PTR(&py_imu_acceleration_mg_obj) }, { MP_ROM_QSTR(MP_QSTR_angular_rate_mdps), MP_ROM_PTR(&py_imu_angular_rate_mdps_obj) }, { MP_ROM_QSTR(MP_QSTR_temperature_c), MP_ROM_PTR(&py_imu_temperature_c_obj) }, @@ -216,16 +213,6 @@ STATIC const mp_rom_map_elem_t globals_dict_table[] = { { MP_ROM_QSTR(MP_QSTR_sleep), MP_ROM_PTR(&py_imu_sleep_obj) }, { MP_ROM_QSTR(MP_QSTR___write_reg), MP_ROM_PTR(&py_imu_write_reg_obj) }, { MP_ROM_QSTR(MP_QSTR___read_reg), MP_ROM_PTR(&py_imu_read_reg_obj) }, -#else - { MP_ROM_QSTR(MP_QSTR_acceleration_mg), MP_ROM_PTR(&py_func_unavailable_obj) }, - { MP_ROM_QSTR(MP_QSTR_angular_rate_mdps), MP_ROM_PTR(&py_func_unavailable_obj) }, - { MP_ROM_QSTR(MP_QSTR_temperature_c), MP_ROM_PTR(&py_func_unavailable_obj) }, - { MP_ROM_QSTR(MP_QSTR_roll), MP_ROM_PTR(&py_func_unavailable_obj) }, - { MP_ROM_QSTR(MP_QSTR_pitch), MP_ROM_PTR(&py_func_unavailable_obj) }, - { MP_ROM_QSTR(MP_QSTR_sleep), MP_ROM_PTR(&py_func_unavailable_obj) }, - { MP_ROM_QSTR(MP_QSTR___write_reg), MP_ROM_PTR(&py_func_unavailable_obj) }, - { MP_ROM_QSTR(MP_QSTR___read_reg), MP_ROM_PTR(&py_func_unavailable_obj) }, -#endif }; STATIC MP_DEFINE_CONST_DICT(globals_dict, globals_dict_table); @@ -237,7 +224,6 @@ const mp_obj_module_t imu_module = { void py_imu_init() { -#if defined(OMV_ENABLE_IMU) HAL_SPI_Init(&SPIHandle); uint8_t whoamI = 0, rst = 1; @@ -270,31 +256,23 @@ void py_imu_init() lsm6ds3tr_c_xl_full_scale_set(&dev_ctx, LSM6DS3TR_C_8g); lsm6ds3tr_c_gy_full_scale_set(&dev_ctx, LSM6DS3TR_C_2000dps); -#endif } float py_imu_roll_rotation() { -#if defined(OMV_ENABLE_IMU) if (test_not_ready()) { return 0; // output when the camera is mounted upright } return py_imu_get_roll(); -#else - return 0; // output when the camera is mounted upright -#endif } float py_imu_pitch_rotation() { -#if defined(OMV_ENABLE_IMU) if (test_not_ready()) { return 0; // output when the camera is mounted upright } return py_imu_get_pitch(); -#else - return 0; // output when the camera is mounted upright -#endif } +#endif //MICROPY_PY_IMU