Make IMU configurable.

This commit is contained in:
iabdalkader 2020-02-11 15:20:14 +02:00
parent 21047711c6
commit e56a1341f2
5 changed files with 17 additions and 28 deletions

View File

@ -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

@ -1 +1 @@
Subproject commit 87995c9d1e85591e111513bd4ae3d1fafdf4f43d
Subproject commit 39dc5109860f43166737db16cf49850fd8f07f68

View File

@ -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)

View File

@ -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

View File

@ -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