diff --git a/include/darwin_dyn_master.h b/include/darwin_dyn_master.h index 2fe3a091e389607393849b133065d870929fdc8b..dc6611bfda81cbe6639ee38fd386cc8f5b3a1a1a 100644 --- a/include/darwin_dyn_master.h +++ b/include/darwin_dyn_master.h @@ -9,8 +9,6 @@ extern "C" { #include "comm.h" #include "dynamixel_master.h" -extern TDynamixelMaster darwin_dyn_master; - TDynamixelMaster *darwin_dyn_master_init(void); void darwin_dyn_master_enable_power(void); void darwin_dyn_master_disable_power(void); diff --git a/include/darwin_dyn_master2.h b/include/darwin_dyn_master2.h new file mode 100644 index 0000000000000000000000000000000000000000..425fc2f44e808060e54b57459672bb0c624b393b --- /dev/null +++ b/include/darwin_dyn_master2.h @@ -0,0 +1,21 @@ +#ifndef _DARWIN_DYN_MASTER2_H +#define _DARWIN_DYN_MASTER2_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include "stm32f1xx.h" +#include "comm.h" +#include "dynamixel_master.h" + +TDynamixelMaster *darwin_dyn_master2_init(void); +void darwin_dyn_master2_enable_power(void); +void darwin_dyn_master2_disable_power(void); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/include/darwin_dyn_master_v2.h b/include/darwin_dyn_master_v2.h deleted file mode 100644 index 2f27508d9df49a542348b01eb6b5139663dbcb3d..0000000000000000000000000000000000000000 --- a/include/darwin_dyn_master_v2.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef _DARWIN_DYN_MASTER_V2_H -#define _DARWIN_DYN_MASTER_V2_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include "stm32f1xx.h" -#include "comm.h" -#include "dynamixel_master.h" - -extern TDynamixelMaster darwin_dyn_master_v2; - -void darwin_dyn_master_v2_init(void); -void darwin_dyn_master_v2_enable_power(void); -void darwin_dyn_master_v2_disable_power(void); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index adc42f27fe21a268bea9d5f7443c28469b51e036..5b017b947933eda74a3dea822fc8396220db873a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -7,6 +7,7 @@ SET(sources ${CMAKE_CURRENT_SOURCE_DIR}/cm730_fw.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_master2.c ${CMAKE_CURRENT_SOURCE_DIR}/stm32f1xx_hal_msp.c ${CMAKE_CURRENT_SOURCE_DIR}/darwin_balance.c ${CMAKE_CURRENT_SOURCE_DIR}/darwin_motion.c @@ -15,6 +16,7 @@ SET(sources ${CMAKE_CURRENT_SOURCE_DIR}/cm730_fw.c ${CMAKE_CURRENT_SOURCE_DIR}/darwin_motion_pages.c #${CMAKE_CURRENT_SOURCE_DIR}/smart_charger.c ${PROJECT_SOURCE_DIR}/stm32_libraries/f1/usart/src/usart3.c + ${PROJECT_SOURCE_DIR}/stm32_libraries/f1/usart/src/usart2.c ${PROJECT_SOURCE_DIR}/stm32_libraries/f1/usart/src/usart1.c PARENT_SCOPE) set(header_include_dir ${CMAKE_CURRENT_SOURCE_DIR}/../include ${PROJECT_SOURCE_DIR}/stm32_libraries/f1/usart/include PARENT_SCOPE) diff --git a/src/darwin_dyn_master_v2.c b/src/darwin_dyn_master2.c similarity index 57% rename from src/darwin_dyn_master_v2.c rename to src/darwin_dyn_master2.c index 732bd5636a1954dd9cea8d1eaae1fe09161afd5c..82392fb78f2b94e9719adbd09f66e7a636526fc5 100755 --- a/src/darwin_dyn_master_v2.c +++ b/src/darwin_dyn_master2.c @@ -1,4 +1,4 @@ -#include "darwin_dyn_master_v2.h" +#include "darwin_dyn_master2.h" #include "darwin_time.h" #include "usart2.h" #include "ram.h" @@ -16,32 +16,32 @@ #define POWER_GPIO_PORT GPIOC /* private variables */ -TDynamixelMaster darwin_dyn_master_v2; -TTime darwin_dyn_master_v2_timer; -TComm darwin_dyn_master_v2_comm; +TDynamixelMaster darwin_dyn_master2; +TTime darwin_dyn_master2_timer; +TComm darwin_dyn_master2_comm; // private functions -void darwin_dyn_master_v2_set_rx_mode(void) +void darwin_dyn_master2_set_rx_mode(void) { HAL_GPIO_WritePin(TX_EN_GPIO_PORT,TX_EN_PIN,GPIO_PIN_RESET); HAL_GPIO_WritePin(RX_EN_GPIO_PORT,RX_EN_PIN,GPIO_PIN_SET); } -void darwin_dyn_master_v2_set_tx_mode(void) +void darwin_dyn_master2_set_tx_mode(void) { HAL_GPIO_WritePin(RX_EN_GPIO_PORT,RX_EN_PIN,GPIO_PIN_RESET); HAL_GPIO_WritePin(TX_EN_GPIO_PORT,TX_EN_PIN,GPIO_PIN_SET); } // public functions -void darwin_dyn_master_v2_init(void) +TDynamixelMaster *darwin_dyn_master2_init(void) { GPIO_InitTypeDef GPIO_InitStructure; TUSART_IRQ_Priorities priorities; - UART_InitTypeDef Init; + USART_InitTypeDef Init; // initialize timer structure - time_init(&darwin_dyn_master_v2_timer,darwin_time_get_counts_per_us(),darwin_time_get_counts); + time_init(&darwin_dyn_master2_timer,darwin_time_get_counts_per_us(),darwin_time_get_counts); // initialize GPIO ENABLE_RX_EN_GPIO_CLK; @@ -56,17 +56,18 @@ void darwin_dyn_master_v2_init(void) GPIO_InitStructure.Pin = TX_EN_PIN; HAL_GPIO_Init(TX_EN_GPIO_PORT, &GPIO_InitStructure); - darwin_dyn_master_v2_set_rx_mode(); + darwin_dyn_master2_set_rx_mode(); /* initialize the comm object */ - comm_init(&darwin_dyn_master_v2_comm,0x01,&darwin_dyn_master_v2_timer); + comm_init(&darwin_dyn_master2_comm,0x01,&darwin_dyn_master2_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=2; @@ -75,26 +76,27 @@ void darwin_dyn_master_v2_init(void) priorities.dma_tx_priority=1; priorities.dma_tx_subpriority=0; - usart2_init(&darwin_dyn_master_v2_comm,&Init,&priorities); - dyn_master_init(&darwin_dyn_master_v2,&darwin_dyn_master_v2_comm,DYN_VER2); - darwin_dyn_master_v2.set_rx_mode=darwin_dyn_master_v2_set_rx_mode; - darwin_dyn_master_v2.set_tx_mode=darwin_dyn_master_v2_set_tx_mode; + usart2_init(&darwin_dyn_master2_comm,&Init,&priorities); + dyn_master_init(&darwin_dyn_master2,&darwin_dyn_master2_comm,DYN_VER2); + darwin_dyn_master2.set_rx_mode=darwin_dyn_master2_set_rx_mode; + darwin_dyn_master2.set_tx_mode=darwin_dyn_master2_set_tx_mode; /* configure dynamixel master module */ - dyn_master_set_rx_timeout(&darwin_dyn_master_v2,50); - dyn_master_set_return_level(&darwin_dyn_master_v2,RETURN_ALL); - darwin_dyn_master_v2_disable_power(); + dyn_master_set_rx_timeout(&darwin_dyn_master2,50); + dyn_master_set_return_level(&darwin_dyn_master2,return_all); + + return &darwin_dyn_master2; } -void darwin_dyn_master_v2_enable_power(void) +void darwin_dyn_master2_enable_power(void) { HAL_GPIO_WritePin(POWER_GPIO_PORT,POWER_PIN,GPIO_PIN_SET); - ram_data[DARWIN_MM_CNTRL]|=MANAGER_EN_PWR_V2; +// ram_data[DARWIN_MM_CNTRL]|=MANAGER_EN_PWR2; } -void darwin_dyn_master_v2_disable_power(void) +void darwin_dyn_master2_disable_power(void) { HAL_GPIO_WritePin(POWER_GPIO_PORT,POWER_PIN,GPIO_PIN_RESET); - ram_data[DARWIN_MM_CNTRL]&=(~MANAGER_EN_PWR_V2); +// ram_data[DARWIN_MM_CNTRL]&=(~MANAGER_EN_PWR2); } diff --git a/src/darwin_motion.c b/src/darwin_motion.c index a4b04099f3b7d7d665ad5d764741e1c8498a65b5..b248fefed5cf46d0b8e8d65096629f30a5dc736b 100644 --- a/src/darwin_motion.c +++ b/src/darwin_motion.c @@ -1,6 +1,7 @@ #include "darwin_motion.h" #include "darwin_balance.h" #include "darwin_dyn_master.h" +#include "darwin_dyn_master2.h" #include "motion_manager.h" #include "action.h" #include "joint_motion.h" @@ -11,6 +12,7 @@ TDynManager darwin_dyn_manager; TDynamixelMaster *darwin_master; +TDynamixelMaster *darwin_master2; TMotionManager darwin_mmanager; TActionMModule action_mm; TJointMModule joints_mm; @@ -31,8 +33,10 @@ unsigned char darwin_mm_init(TScheduler *scheduler,TMemory *memory) dyn_manager_init(&darwin_dyn_manager,memory,scheduler,SCHED_CH3,SCHED_CH2,RAM_DYN_MANAGER_BASE_ADDRESS,EEPROM_DYN_MANAGER_BASE_ADDRESS); // initialize dynamixel master darwin_master=darwin_dyn_master_init(); + darwin_master2=darwin_dyn_master2_init(); // add master to manager dyn_manager_add_master(&darwin_dyn_manager,darwin_master); + dyn_manager_add_master(&darwin_dyn_manager,darwin_master2); // initialize motion manager mmanager_init(&darwin_mmanager,memory,RAM_MMANAGER_BASE_ADDRESS,EEPROM_MMANAGER_BASE_ADDRESS);