diff --git a/dynamixel_manager/src/dyn_manager.c b/dynamixel_manager/src/dyn_manager.c index 99d42c5ce8439eba246f927e970b885b2a969f64..65acbd4926d8c3d8593ad8ceee10bf121f091957 100644 --- a/dynamixel_manager/src/dyn_manager.c +++ b/dynamixel_manager/src/dyn_manager.c @@ -361,12 +361,12 @@ void dyn_manager_start(TDynManager *manager) { scheduler_enable_channel(manager->scheduler,manager->sch_loop_ch); manager->running=0x01; + manager->stop_flag=0x00; manager->memory->data[manager->ram_base_address+DYN_MANAGER_CONTROL_OFFSET]|=DYN_MANAGER_RUNNING; } void dyn_manager_stop(TDynManager *manager) { - scheduler_disable_channel(manager->scheduler,manager->sch_loop_ch); manager->stop_flag=0x01; } @@ -1101,7 +1101,7 @@ void dyn_manager_loop(TDynManager *manager) // initialize the remaining operations dyn_manager_lock(manager); - for(i=0;i<manager->num_masters;i++) + for(i=0;i<DYN_MANAGER_MAX_NUM_MASTERS;i++) { states[i]=start_single_ops; current_single_op[i]=0; @@ -1119,7 +1119,6 @@ void dyn_manager_loop(TDynManager *manager) { if(manager->modules[i]->pre_process!=0x00000000) manager->modules[i]->pre_process(manager->modules[i]->data); - manager->modules_period_count[i]=0; } } } @@ -1275,5 +1274,6 @@ void dyn_manager_loop(TDynManager *manager) manager->running=0x00; manager->memory->data[manager->ram_base_address+DYN_MANAGER_CONTROL_OFFSET]&=(~DYN_MANAGER_RUNNING); manager->stop_flag=0x00; + scheduler_disable_channel(manager->scheduler,manager->sch_loop_ch); } }