static void app_rover_setup(app_common *com, app_remote *rem, configuration_t *cnf) { common = com; remote = rem; app_cfg = cnf; #ifdef CONFIG_SPYBOT_HCSR RANGE_SENS_init(app_rover_radar_cb); #endif #ifdef CONFIG_I2C I2C_config(_I2C_BUS(0), 100000); STMPE_init(); #ifdef CONFIG_SPYBOT_LSM task *config_lsm_t = TASK_create(app_rover_setup_lsm, 0); ASSERT(config_lsm_t); TASK_run(config_lsm_t, 0, NULL); #endif CFG_EE_init(&eeprom_dev, app_rover_cfg_cb); CFG_EE_load_config(); #endif // CONFIG_I2C #ifdef CONFIG_SPYBOT_MOTOR MOTOR_init(); #endif #ifdef CONFIG_SPYBOT_SERVO SERVO_init(); #endif mech_task = TASK_create(app_rover_mech_task, TASK_STATIC); TASK_start_timer(mech_task, &mech_timer, 0, 0, 0, 20, "mech"); #ifdef CONFIG_SPYBOT_HCSR radar_task = TASK_create(app_rover_radar_task, TASK_STATIC); TASK_start_timer(radar_task, &radar_timer, 0, 0, 100, 65, "radar"); #endif // CONFIG_SPYBOT_HCSR #ifdef CONFIG_SPYBOT_LSM int i; for (i = 0; i < 3; i++) { acc_extremes[i][0] = S16_MAX; acc_extremes[i][1] = S16_MIN; mag_extremes[i][0] = S16_MAX; mag_extremes[i][1] = S16_MIN; } #endif COMRAD_init(); }
///* int main(void) { char keyVal; static bool sw_adxl345 = true,sw_l3g4200d = true, sw_hmc5883l=true,sw_bmp085 =true; SystemInit(); USART3_Config(); I2C_config(); L3G4200D_Init(); printf("Initial successed!\n\r"); while(1) { // L3G4200D_MultRead(&l3g4200d); //讀陀螺儀數據(速度:較快) L3G4200D_Read(&l3g4200d); L3G4200D_Printf(&l3g4200d); Delayms(10); } }
static void app_rover_lsm_task(u32_t a, void *b) { TRACE_USR_MSG(0x00); if (reading_lsm) { TRACE_USR_MSG(0x01); return; } if (!TASK_mutex_lock(&i2c_mutex)) { TRACE_USR_MSG(0x02); return; } TRACE_USR_MSG(0x10); reading_lsm = TRUE; int res = lsm_read_both(&lsm_dev); if (res != I2C_OK) { TRACE_USR_MSG(0x11); I2C_reset(_I2C_BUS(0)); I2C_config(_I2C_BUS(0), 100000); TASK_mutex_unlock(&i2c_mutex); reading_lsm = FALSE; } }
/* * @ open I2C port */ int I2C_open(i2c_mode_t type) { I2C_GPIO_INIT(); I2C_config(type); return 0; }