diff --git a/include/darwin_conf.h b/include/darwin_conf.h index 548407c5d6a6fe6bbb1adcc94d271dc2e2f57a47..c922b66055fe760373dc581ad210cbd9e109c172 100644 --- a/include/darwin_conf.h +++ b/include/darwin_conf.h @@ -27,7 +27,7 @@ #define EEPROM_BALANCE_BASE_ADDRESS ((unsigned short int)0x0007) #define RAM_BALANCE_BASE_ADDRESS ((unsigned short int)0x00AF) -#define NUM_MOTION_PAGES 256 +#define NUM_MOTION_PAGES 46 #define MAX_DYN_MASTER_TX_BUFFER_LEN 1024 #define MAX_DYN_MASTER_RX_BUFFER_LEN 1024 #define MAX_DYN_SLAVE_TX_BUFFER_LEN 1024 @@ -46,9 +46,9 @@ /* EEPROM default values */ /* Dynamixel slave */ -#define DARWIN_DEVICE_MODEL 0x7300 -#define DARWIN_FIRMWARE_VERSION 0x0001 -#define DARWIN_DEVICE_ID 0x0001 +#define DARWIN_DEVICE_MODEL 0x7300 +#define DARWIN_FIRMWARE_VERSION 0x0001 +#define DARWIN_DEVICE_ID 0x0001 #define DEFAULT_BAUDRATE 0x0010 #define DEFAULT_RETURN_DELAY 0x0000 diff --git a/include/darwin_dyn_master.h b/include/darwin_dyn_master.h index cca8fc192ff897c7d4d33b188fc57d7a432238ad..2fe3a091e389607393849b133065d870929fdc8b 100644 --- a/include/darwin_dyn_master.h +++ b/include/darwin_dyn_master.h @@ -11,7 +11,7 @@ extern "C" { extern TDynamixelMaster darwin_dyn_master; -void darwin_dyn_master_init(void); +TDynamixelMaster *darwin_dyn_master_init(void); void darwin_dyn_master_enable_power(void); void darwin_dyn_master_disable_power(void); diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a82710058781506979167a31e2440ac5b4bb2c99..cfb80e21ce0376d79f537dd3d41f73fb2c33ccc0 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -6,20 +6,12 @@ SET(sources ${CMAKE_CURRENT_SOURCE_DIR}/cm730_fw.c #${CMAKE_CURRENT_SOURCE_DIR}/adc_dma.c ${CMAKE_CURRENT_SOURCE_DIR}/darwin_imu.c ${CMAKE_CURRENT_SOURCE_DIR}/darwin_dyn_slave.c - #${CMAKE_CURRENT_SOURCE_DIR}/darwin_dyn_master.c - #${CMAKE_CURRENT_SOURCE_DIR}/darwin_dyn_master_v2.c + ${CMAKE_CURRENT_SOURCE_DIR}/darwin_dyn_master.c ${CMAKE_CURRENT_SOURCE_DIR}/stm32f1xx_hal_msp.c - #${CMAKE_CURRENT_SOURCE_DIR}/motion_manager.c - #${CMAKE_CURRENT_SOURCE_DIR}/action.c - #${CMAKE_CURRENT_SOURCE_DIR}/motion_pages.c - #${CMAKE_CURRENT_SOURCE_DIR}/walking.c - #${CMAKE_CURRENT_SOURCE_DIR}/darwin_math.c - #${CMAKE_CURRENT_SOURCE_DIR}/darwin_kinematics.c - #${CMAKE_CURRENT_SOURCE_DIR}/joint_motion.c - #${CMAKE_CURRENT_SOURCE_DIR}/head_tracking.c - #${CMAKE_CURRENT_SOURCE_DIR}/grippers.c + ${CMAKE_CURRENT_SOURCE_DIR}/darwin_balance.c + ${CMAKE_CURRENT_SOURCE_DIR}/darwin_motion.c + ${CMAKE_CURRENT_SOURCE_DIR}/darwin_motion_pages.c #${CMAKE_CURRENT_SOURCE_DIR}/smart_charger.c - #${CMAKE_CURRENT_SOURCE_DIR}/stairs.c ${PROJECT_SOURCE_DIR}/stm32_libraries/f1/usart/src/usart3.c ${PROJECT_SOURCE_DIR}/stm32_libraries/f1/usart/src/usart1.c PARENT_SCOPE) diff --git a/src/cm730_fw.c b/src/cm730_fw.c index 1f4527b531da504ae15f53879e4407bc0ce63f52..b1c17b782fd46a3f4cdc91c66b87964a791e3dcf 100755 --- a/src/cm730_fw.c +++ b/src/cm730_fw.c @@ -6,15 +6,12 @@ #include "darwin_time.h" #include "eeprom.h" #include "darwin_imu.h" -//#include "gpio.h" -//#include "adc_dma.h" -//#include "darwin_dyn_master.h" -//#include "darwin_dyn_master_v2.h" -//#include "motion_manager.h" -//#include "action.h" -//#include "action_id.h" +#include "darwin_motion.h" +#include "darwin_imu.h" +#include "darwin_balance.h" TMemory *darwin_memory; +TDynamixelMaster *dyn_master; TScheduler *scheduler; int main(void) @@ -37,7 +34,8 @@ int main(void) darwin_dyn_slave_init(&darwin_memory,scheduler); // initialize imu imu_init(darwin_memory,RAM_IMU_MM_BASE_ADDRESS); - /* initialize motion manager module */ + // initialize motion manager + darwin_mm_init(scheduler,darwin_memory); /* initialize the ram module */ ram_init(darwin_memory); diff --git a/src/darwin_dyn_master.c b/src/darwin_dyn_master.c index 9762cf6fee1474dc5059537fdd592db6530a0320..b09259372d45bcedd9f6a16d588668313dc86684 100755 --- a/src/darwin_dyn_master.c +++ b/src/darwin_dyn_master.c @@ -1,7 +1,6 @@ #include "darwin_dyn_master.h" #include "darwin_time.h" #include "usart1.h" -#include "ram.h" #define ENABLE_RX_EN_GPIO_CLK __GPIOB_CLK_ENABLE() #define RX_EN_PIN GPIO_PIN_5 @@ -34,11 +33,11 @@ void darwin_dyn_master_set_tx_mode(void) } // public functions -void darwin_dyn_master_init(void) +TDynamixelMaster *darwin_dyn_master_init(void) { GPIO_InitTypeDef GPIO_InitStructure; TUSART_IRQ_Priorities priorities; - UART_InitTypeDef Init; + USART_InitTypeDef Init; // initialize timer structure time_init(&darwin_dyn_master_timer,darwin_time_get_counts_per_us(),darwin_time_get_counts); @@ -68,12 +67,13 @@ void darwin_dyn_master_init(void) /* initialize the comm object */ comm_init(&darwin_dyn_master_comm,0x01,&darwin_dyn_master_timer); Init.BaudRate = 1000000; //57600; - Init.WordLength = UART_WORDLENGTH_8B; - Init.StopBits = UART_STOPBITS_1; - Init.Parity = UART_PARITY_NONE; - Init.Mode = UART_MODE_TX_RX; - Init.HwFlowCtl = UART_HWCONTROL_NONE; - Init.OverSampling = UART_OVERSAMPLING_16; + Init.WordLength = USART_WORDLENGTH_8B; + Init.StopBits = USART_STOPBITS_1; + Init.Parity = USART_PARITY_NONE; + Init.Mode = USART_MODE_TX_RX; + Init.CLKPolarity = USART_POLARITY_LOW; + Init.CLKPhase = USART_PHASE_1EDGE; + Init.CLKLastBit = USART_LASTBIT_DISABLE; priorities.irq_priority=0; priorities.irq_subpriority=1; @@ -89,18 +89,20 @@ void darwin_dyn_master_init(void) /* configure dynamixel master module */ dyn_master_set_rx_timeout(&darwin_dyn_master,50); - dyn_master_set_return_level(&darwin_dyn_master,RETURN_ALL); + dyn_master_set_return_level(&darwin_dyn_master,return_all); + + return &darwin_dyn_master; } void darwin_dyn_master_enable_power(void) { HAL_GPIO_WritePin(POWER_GPIO_PORT,POWER_PIN,GPIO_PIN_SET); - ram_data[DARWIN_MM_CNTRL]|=MANAGER_EN_PWR; +// ram_data[DARWIN_MM_CNTRL]|=MANAGER_EN_PWR; } void darwin_dyn_master_disable_power(void) { HAL_GPIO_WritePin(POWER_GPIO_PORT,POWER_PIN,GPIO_PIN_RESET); - ram_data[DARWIN_MM_CNTRL]&=(~MANAGER_EN_PWR); +// ram_data[DARWIN_MM_CNTRL]&=(~MANAGER_EN_PWR); }