diff --git a/dynamixel_manager/test/Makefile b/dynamixel_manager/test/Makefile index ab6ea4168a959f2d1f21bbf2388ba9372bd2b8c4..76bfa2cd86f2ccf8ed4898b663537f42595ef0eb 100755 --- a/dynamixel_manager/test/Makefile +++ b/dynamixel_manager/test/Makefile @@ -8,10 +8,11 @@ TARGET_FILES+=$(wildcard ../src/*.c) TARGET_FILES+=$(wildcard ../../utils/src/*.c) TARGET_FILES+=$(wildcard ../../comm/src/*.c) TARGET_FILES+=$(wildcard ../../memory/src/*.c) +TARGET_FILES+=$(wildcard ../../scheduler/src/*.c) BUILD_PATH=build BIN_PATH=bin -INCLUDE_DIRS = -I../include -I../include/modules -I../../utils/include -I../../comm/include -I ../../memory/include -I../../dynamixel_base/include +INCLUDE_DIRS = -I../include -I../include/modules -I../../utils/include -I../../comm/include -I ../../memory/include -I../../dynamixel_base/include -I../../scheduler/include MACROS = -DMAX_DYN_MASTER_TX_BUFFER_LEN=256 -DMAX_DYN_MASTER_RX_BUFFER_LEN=256 -DDYN_MANAGER_MAX_NUM_MASTERS=4 -DDYN_MANAGER_MAX_NUM_MODULES=8 -DDYN_MANAGER_MAX_NUM_DEVICES=32 -DDYN_MANAGER_MAX_NUM_SINGLE_OP=16 -DDYN_MANAGER_MAX_NUM_SYNC_OP=4 -DDYN_MANAGER_MAX_NUM_BULK_OP=4 -DMODULE_MAX_NUM_MODELS=32 -DMM_MAX_NUM_MOTION_MODULES=8 -DEEPROM_SIZE=64 -DRAM_SIZE=1024 @@ -46,6 +47,9 @@ $(BUILD_PATH)/%.o: ../../comm/src/%.c $(BUILD_PATH)/%.o: ../../memory/src/%.c $(CC) -c -g $(INCLUDE_DIRS) $(MACROS) -o $@ $< +$(BUILD_PATH)/%.o: ../../scheduler/src/%.c + $(CC) -c -g $(INCLUDE_DIRS) $(MACROS) -o $@ $< + $(OUT_FILE): make_dirs $(TEST_OBJS) $(CC) -g $(TEST_OBJS) -lpthread --output $@ diff --git a/dynamixel_manager/test/dyn_man_test.c b/dynamixel_manager/test/dyn_man_test.c index e715b06fd882d3f5ce8918a9173570e6a4be1388..ba6351140a9b837f4889a2b53ca3b01a647ec4c1 100644 --- a/dynamixel_manager/test/dyn_man_test.c +++ b/dynamixel_manager/test/dyn_man_test.c @@ -6,11 +6,15 @@ #include "motion_manager.h" #include "action.h" #include "dyn_servos.h" +#include "scheduler.h" TDynamixelMaster dyn_master1; TDynamixelMaster dyn_master2; TDynManager manager; TMemory memory; +TScheduler scheduler; + +unsigned int SystemCoreClock=168000000; // timer functions unsigned long long int time_get_counts(void) @@ -138,11 +142,11 @@ unsigned char dyn_master_read_word(TDynamixelMaster *master,unsigned char id,uns unsigned char dyn_master_start_read_table(TDynamixelMaster *master,unsigned char id,unsigned short int address,unsigned short int length,unsigned char *data) { - if(master==&dyn_master1) - printf("Master 1\n"); - else - printf("Master 2\n"); - printf(" read operation to servo %d at address %d with length %d\n",id,address,length); +// if(master==&dyn_master1) +// printf("Master 1\n"); +// else +// printf("Master 2\n"); +// printf(" read operation to servo %d at address %d with length %d\n",id,address,length); return DYN_SUCCESS; } @@ -156,14 +160,14 @@ unsigned char dyn_master_start_write_table(TDynamixelMaster *master,unsigned cha { unsigned short int i; - if(master==&dyn_master1) - printf("Master 1\n"); - else - printf("Master 2\n"); - printf(" write operation to servo %d at address %d with length %d\n",id,address,length); - printf(" data:\n"); - for(i=0;i<length;i++) - printf(" 0x%x\n",data[i]); +// if(master==&dyn_master1) +// printf("Master 1\n"); +// else +// printf("Master 2\n"); +// printf(" write operation to servo %d at address %d with length %d\n",id,address,length); +// printf(" data:\n"); +// for(i=0;i<length;i++) +// printf(" 0x%x\n",data[i]); return DYN_SUCCESS; } @@ -177,23 +181,23 @@ unsigned char dyn_master_start_sync_write(TDynamixelMaster *master,unsigned char { unsigned short int i,j; - if(master==&dyn_master1) - printf("Master 1\n"); - else - printf("Master 2\n"); - printf(" sync write operation at address %d with length %d\n",address,length); - for(j=0;j<num;j++) - { - printf(" servo %d data:\n",ids[j]); - for(i=0;i<length;i++) - printf(" 0x%x\n",data[j][i]); - } -/* if(master==&dyn_master1 && address==P_CW_COMPLIANCE_SLOPE && length==4) +// if(master==&dyn_master1) +// printf("Master 1\n"); +// else +// printf("Master 2\n"); +// printf(" sync write operation at address %d with length %d\n",address,length); +// for(j=0;j<num;j++) +// { +// printf(" servo %d data:\n",ids[j]); +// for(i=0;i<length;i++) +// printf(" 0x%x\n",data[j][i]); +// } + if(master==&dyn_master1 && address==P_CW_COMPLIANCE_SLOPE && length==4) { for(i=0;i<num;i++) printf("%d,",data[i][2]+(data[i][3]<<8)); printf("\n"); - }*/ + } return DYN_SUCCESS; } @@ -207,13 +211,13 @@ unsigned char dyn_master_start_sync_read(TDynamixelMaster *master,unsigned char { unsigned short int i; - if(master==&dyn_master1) - printf("Master 1\n"); - else - printf("Master 2\n"); - printf(" sync read operation at address %d with length %d for servos:\n",address,length); - for(i=0;i<num;i++) - printf(" servo %d:\n",ids[i]); +// if(master==&dyn_master1) +// printf("Master 1\n"); +// else +// printf("Master 2\n"); +// printf(" sync read operation at address %d with length %d for servos:\n",address,length); +// for(i=0;i<num;i++) +// printf(" servo %d:\n",ids[i]); return DYN_SUCCESS; } @@ -227,17 +231,17 @@ unsigned char dyn_master_start_bulk_write(TDynamixelMaster *master,unsigned char { unsigned short int i,j; - if(master==&dyn_master1) - printf("Master 1\n"); - else - printf("Master 2\n"); - printf(" bulk write operation:\n"); - for(j=0;j<num;j++) - { - printf(" servo %d at address %d with length %d and data:\n",ids[j],address[j],length[j]); - for(i=0;i<length[j];i++) - printf(" 0x%x\n",data[j][i]); - } +// if(master==&dyn_master1) +// printf("Master 1\n"); +// else +// printf("Master 2\n"); +// printf(" bulk write operation:\n"); +// for(j=0;j<num;j++) +// { +// printf(" servo %d at address %d with length %d and data:\n",ids[j],address[j],length[j]); +// for(i=0;i<length[j];i++) +// printf(" 0x%x\n",data[j][i]); +// } return DYN_SUCCESS; } @@ -251,13 +255,13 @@ unsigned char dyn_master_start_bulk_read(TDynamixelMaster *master,unsigned char { unsigned short int i,j; - if(master==&dyn_master1) - printf("Master 1\n"); - else - printf("Master 2\n"); - printf(" bulk read operation:\n"); - for(j=0;j<num;j++) - printf(" servo %d at address %d with length %d\n",ids[j],address[j],length[j]); +// if(master==&dyn_master1) +// printf("Master 1\n"); +// else +// printf("Master 2\n"); +// printf(" bulk read operation:\n"); +// for(j=0;j<num;j++) +// printf(" servo %d at address %d with length %d\n",ids[j],address[j],length[j]); return DYN_SUCCESS; } @@ -276,13 +280,8 @@ int main(void) TTime dyn_master2_timer; TComm dyn_master2_comm; - // init modules - mmanager_init(&mmanager,&memory,16,128); - action_init(); - mmanager_add_module(&mmanager,action_get_module()); - dyn_module_set_period(mmanager_get_dyn_module(&mmanager),1); - dyn_module_enable(mmanager_get_dyn_module(&mmanager)); - + scheduler_init(&scheduler,1,100); + // init masters time_init(&dyn_master1_timer,time_get_counts_per_us(),time_get_counts); comm_init(&dyn_master1_comm,0x01,&dyn_master1_timer); @@ -291,10 +290,17 @@ int main(void) comm_init(&dyn_master2_comm,0x01,&dyn_master2_timer); dyn_master_init(&dyn_master2,&dyn_master2_comm,DYN_VER2); - dyn_manager_init(&manager,&memory,0x0000,0x0064); + dyn_manager_init(&manager,&memory,&scheduler,SCHED_CH1,0x0000,0x0064); + dyn_manager_set_period(&manager,14); dyn_manager_add_master(&manager,&dyn_master1); dyn_manager_add_master(&manager,&dyn_master2); + // init modules + mmanager_init(&mmanager,&memory,16,128); + action_init(); + mmanager_add_module(&mmanager,action_get_module()); dyn_manager_add_module(&manager,mmanager_get_dyn_module(&mmanager)); + dyn_module_set_period(mmanager_get_dyn_module(&mmanager),1); + dyn_module_enable(mmanager_get_dyn_module(&mmanager)); dyn_manager_scan(&manager); /* enable all servos and assign them to the ACTION module */ @@ -304,12 +310,12 @@ int main(void) mmanager_enable_servo(&mmanager,i); } /* load and start a page */ - if(action_load_page(9)) + if(action_load_page(7)) action_start_page(); - for(i=0;i<10;i++) + for(i=0;i<100;i++) { - printf("***** Iteration %d *****\n",i); +// printf("***** Iteration %d *****\n",i); dyn_manager_loop(&manager); } }