diff --git a/dynamixel_manager/Makefile b/dynamixel_manager/Makefile index 020c8182f704eec57c52c1efec5a4c7590ff25d3..194e7fca6f45c5a0178292102386447f8f05e892 100755 --- a/dynamixel_manager/Makefile +++ b/dynamixel_manager/Makefile @@ -35,8 +35,8 @@ DYNAMIXEL_OUT_M3 = ./lib/dynamixel_manager_m3.a SRC_DIR=./src/ SRC=$(wildcard $(SRC_DIR)*.c) -#SRC_DIR_MODULES=./src/modules/ -#SRC+=$(wildcard $(SRC_DIR_MODULES)*.c) +SRC_DIR_MODULES=./src/modules/ +SRC+=$(wildcard $(SRC_DIR_MODULES)*.c) DYNAMIXEL_M4_FPU_OBJ_DIR=build/m4_fpu/ DYNAMIXEL_M4_FPU_OBJS_TMP = $(notdir $(SRC:.c=.o)) diff --git a/dynamixel_manager/include/dyn_module.h b/dynamixel_manager/include/dyn_module.h index 77c5ce1e462af9ce4fb367b943413377732c401a..979b248243012a7e660a96060d3161db98a5437b 100644 --- a/dynamixel_manager/include/dyn_module.h +++ b/dynamixel_manager/include/dyn_module.h @@ -26,7 +26,9 @@ typedef struct TDynModule{ void (*pre_process)(void *module_data); void (*post_process)(void *module_data); void *data; - TMemModule *mem_module; + TMemModule mem_module; + unsigned short int ram_base_address; + unsigned short int eeprom_base_address; }TDynModule; //public functions diff --git a/dynamixel_manager/include/modules/motion_manager.h b/dynamixel_manager/include/modules/motion_manager.h index 7ebf98851692aa2f1eae350e0e8c9b33f4cb9db4..0fb76186cc463713527513de08ec4595972fe1c1 100644 --- a/dynamixel_manager/include/modules/motion_manager.h +++ b/dynamixel_manager/include/modules/motion_manager.h @@ -55,7 +55,7 @@ typedef struct { void (*balance)(short int offsets[DYN_MANAGER_MAX_NUM_DEVICES]); }TMotionManager; -unsigned char mmanager_init(TMotionManager *mmanager,TMemory *memory); +unsigned char mmanager_init(TMotionManager *mmanager,TMemory *memory,unsigned short int ram_base_address,unsigned short int eeprom_base_address); TDynModule *mmanager_get_dyn_module(TMotionManager *mmanager); void mmanager_enable_balance(TMotionManager *mmanager); void mmanager_disable_balance(TMotionManager *mmanager); diff --git a/dynamixel_manager/src/dyn_module.c b/dynamixel_manager/src/dyn_module.c index 4207dee7a4b61ba1383b94fe7d4d4b9441326fe2..e63ddca2243621506df9eea07d62a18d4fe0a49d 100644 --- a/dynamixel_manager/src/dyn_module.c +++ b/dynamixel_manager/src/dyn_module.c @@ -17,6 +17,8 @@ unsigned char dyn_module_init(TDynModule *module) module->pre_process=0x00000000; module->post_process=0x00000000; module->data=0x00000000; + /* initialize memory module */ + mem_module_init(&module->mem_module); return 0x01; } diff --git a/dynamixel_manager/src/modules/action.c b/dynamixel_manager/src/modules/action.c index ea816ab70fd8b5fb941a6d98c1ecd37825016141..978ff509dc9e608978659f9671ad47e39506b28b 100755 --- a/dynamixel_manager/src/modules/action.c +++ b/dynamixel_manager/src/modules/action.c @@ -500,7 +500,7 @@ void action_init(void) action_pause_time=0;// fixed point 48|16 format action_current_time=0;// fixed point 48|16 format action_section_time=0;// fixed point 48|16 format - action_period=(DYN_MANAGER_DEFAULT_PERIOD_US<<16)/1000000; + //action_period=(DYN_MANAGER_DEFAULT_PERIOD_US<<16)/1000000; } TMotionModule *action_get_module(void) diff --git a/dynamixel_manager/src/modules/motion_manager.c b/dynamixel_manager/src/modules/motion_manager.c index 9c8c7dc992e7f8098e6ab3ba4c4c4fcedf20625f..e7868622ddd49a8481a8baf9a369e79daf627f15 100644 --- a/dynamixel_manager/src/modules/motion_manager.c +++ b/dynamixel_manager/src/modules/motion_manager.c @@ -1,11 +1,9 @@ #include "motion_manager.h" +#include "motion_manager_registers.h" #include "motion_module.h" #include "dyn_devices.h" #include "dyn_servos.h" -/* private variables */ -uint16_t mm_eeprom_data[] __attribute__ ((section (".eeprom")))={DEFAULT_ADC_PERIOD,ADC_PERIOD}; - /* private functions */ void mmanager_read_cmd(void *module,unsigned short int address,unsigned short int length,unsigned char *data) { @@ -235,7 +233,7 @@ void mmanager_set_period(TMotionManager *mmanager,unsigned short int period_us) { unsigned char i; - for(i=0;i<MAX_NUM_MOTION_MODULES;i++) + for(i=0;i<MM_MAX_NUM_MOTION_MODULES;i++) if(mmanager->modules[i]->set_period!=0x00000000) mmanager->modules[i]->set_period(mmanager->modules[i]->data,period_us*mmanager->dyn_module.period_count); } @@ -244,7 +242,7 @@ void mmanager_pre_process(TMotionManager *mmanager) { unsigned char i; - for(i=0;i<MAX_NUM_MOTION_MODULES;i++) + for(i=0;i<MM_MAX_NUM_MOTION_MODULES;i++) { if(mmanager->modules[i]!=0x00000000 && mmanager->modules[i]->pre_process!=0x00000000) mmanager->modules[i]->pre_process(mmanager->modules[i]->data); @@ -259,7 +257,7 @@ void mmanager_post_process(TMotionManager *mmanager) /* transform the current values to angles */ mmanager_compute_angles(mmanager); - for(i=0;i<MAX_NUM_MOTION_MODULES;i++) + for(i=0;i<MM_MAX_NUM_MOTION_MODULES;i++) { if(mmanager->modules[i]!=0x00000000 && mmanager->modules[i]->post_process!=0x00000000) mmanager->modules[i]->post_process(mmanager->modules[i]->data); @@ -267,7 +265,7 @@ void mmanager_post_process(TMotionManager *mmanager) } /* public functions */ -unsigned char mmanager_init(TMotionManager *mmanager,TMemory *memory) +unsigned char mmanager_init(TMotionManager *mmanager,TMemory *memory,unsigned short int ram_base_address,unsigned short int eeprom_base_address) { unsigned char i; @@ -300,7 +298,7 @@ unsigned char mmanager_init(TMotionManager *mmanager,TMemory *memory) mmanager->balance_enabled=0x00; mmanager->num_modules=0x00; /* initialize motion module base attributes */ - for(i=0;i<MAX_NUM_MOTION_MODULES;i++) + for(i=0;i<MM_MAX_NUM_MOTION_MODULES;i++) mmanager->modules[i]=0x00000000; for(i=0;i<DYN_MANAGER_MAX_NUM_DEVICES;i++) { @@ -330,15 +328,16 @@ unsigned char mmanager_init(TMotionManager *mmanager,TMemory *memory) mmanager->balance=0x00000000; /* initialize memory module */ - mem_module_init(&manager->mem_module); - manager->mem_module.data=manager; - manager->mem_module.write_cmd=mmanager_write_cmd; - manager->mem_module.read_cmd=mmanager_read_cmd; - if(!mem_module_add_ram_segment(&manager->mem_module,RAM_MM_BASE_ADDRESS,RAM_MM_LENGTH)) + mmanager->dyn_module.mem_module.data=mmanager; + mmanager->dyn_module.mem_module.write_cmd=mmanager_write_cmd; + mmanager->dyn_module.mem_module.read_cmd=mmanager_read_cmd; + if(!mem_module_add_ram_segment(&mmanager->dyn_module.mem_module,ram_base_address,RAM_MM_LENGTH)) return 0x00; - if(!mem_module_add_eeprom_segment(&manager->mem_module,EEPROM_MM_BASE_ADDRESS,EEPROM_MM_LENGTH)) + mmanager->dyn_module.ram_base_address=ram_base_address; + if(!mem_module_add_eeprom_segment(&mmanager->dyn_module.mem_module,eeprom_base_address,EEPROM_MM_LENGTH)) return 0x00; - if(!mem_add_module(memory,&manager->mem_module)) + mmanager->dyn_module.eeprom_base_address=eeprom_base_address; + if(!mem_add_module(memory,&mmanager->dyn_module.mem_module)) return 0x00; return 0x01;