From 474970194db764414375f925e21c7ab0b464f103 Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Thu, 5 Aug 2021 23:04:21 +0200 Subject: [PATCH 1/5] Added flos hall --- CMakeLists.txt | 28 ++++++++++++++++++++++++++++ defines.h | 50 +++++++++++++++++++++++++++++--------------------- main.cpp | 30 ++++++++++++++++++++++++------ 3 files changed, 81 insertions(+), 27 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f5e3dc8..8bd3942 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -97,6 +97,34 @@ add_custom_command(OUTPUT motortest.bin COMMAND arm-none-eabi-objcopy -O binary add_custom_target(motortest ALL SOURCES motortest.hex motortest.bin) add_custom_target(flash-motortest COMMAND st-flash --reset write motortest.bin 0x8000000 SOURCES motortest.bin DEPENDS motortest.bin) +# +# motor test peter +# +add_executable(motortest_peter.elf config.h defines.h main.cpp) +target_link_libraries(motortest_peter.elf stm32_hal emanuel_foc_model bobbycar-protocol) +target_compile_options(motortest_peter.elf PRIVATE + -DMOTOR_TEST + -DFEATURE_IGNORE_OTHER_MOTOR +# -DGSCHISSENES_HALL + -DSEHR_GSCHISSENES_HALL +# -DGSCHISSENE_PWM_FREQ +# -DFEATURE_BUTTON + -DPETERS_PLATINE +# -DHUARN2 +# -DHUARN3 +# -DFEATURE_SERIAL_CONTROL +# -DFEATURE_SERIAL_FEEDBACK +# -DLOG_TO_SERIAL +# -DFEATURE_CAN +# -DCAN_LOG_UNKNOWN_ADDR +# -DIS_BACK +) +add_custom_command(OUTPUT motortest_peter.hex COMMAND arm-none-eabi-objcopy -O ihex motortest_peter.elf motortest_peter.hex DEPENDS motortest_peter.elf) +add_custom_command(OUTPUT motortest_peter.bin COMMAND arm-none-eabi-objcopy -O binary -S motortest_peter.elf motortest_peter.bin DEPENDS motortest_peter.elf) +add_custom_target(motortest_peter ALL SOURCES motortest_peter.hex motortest_peter.bin) +add_custom_target(flash-motortest_peter COMMAND st-flash --reset write motortest_peter.bin 0x8000000 SOURCES motortest_peter.bin DEPENDS motortest_peter.bin) + + # # feedc0de front # diff --git a/defines.h b/defines.h index 604d407..2d86f89 100644 --- a/defines.h +++ b/defines.h @@ -23,29 +23,37 @@ #include "stm32f1xx_hal.h" #ifdef PETERS_PLATINE -#ifdef GSCHISSENES_HALL - #define LEFT_HALL_U_PIN GPIO_PIN_10 - #define LEFT_HALL_V_PIN GPIO_PIN_11 - #define LEFT_HALL_W_PIN GPIO_PIN_12 -#else - #define LEFT_HALL_U_PIN GPIO_PIN_12 - #define LEFT_HALL_V_PIN GPIO_PIN_11 - #define LEFT_HALL_W_PIN GPIO_PIN_10 -#endif + #ifdef GSCHISSENES_HALL + #define LEFT_HALL_U_PIN GPIO_PIN_10 + #define LEFT_HALL_V_PIN GPIO_PIN_11 + #define LEFT_HALL_W_PIN GPIO_PIN_12 + #elif SEHR_GSCHISSENES_HALL + #define LEFT_HALL_U_PIN GPIO_PIN_12 + #define LEFT_HALL_V_PIN GPIO_PIN_10 + #define LEFT_HALL_W_PIN GPIO_PIN_11 + #else + #define LEFT_HALL_U_PIN GPIO_PIN_12 + #define LEFT_HALL_V_PIN GPIO_PIN_11 + #define LEFT_HALL_W_PIN GPIO_PIN_10 + #endif - #define LEFT_HALL_U_PORT GPIOC - #define LEFT_HALL_V_PORT GPIOC - #define LEFT_HALL_W_PORT GPIOC + #define LEFT_HALL_U_PORT GPIOC + #define LEFT_HALL_V_PORT GPIOC + #define LEFT_HALL_W_PORT GPIOC -#ifdef GSCHISSENES_HALL - #define RIGHT_HALL_U_PIN GPIO_PIN_7 - #define RIGHT_HALL_V_PIN GPIO_PIN_6 - #define RIGHT_HALL_W_PIN GPIO_PIN_5 -#else - #define RIGHT_HALL_U_PIN GPIO_PIN_5 - #define RIGHT_HALL_V_PIN GPIO_PIN_6 - #define RIGHT_HALL_W_PIN GPIO_PIN_7 -#endif + #ifdef GSCHISSENES_HALL + #define RIGHT_HALL_U_PIN GPIO_PIN_7 + #define RIGHT_HALL_V_PIN GPIO_PIN_6 + #define RIGHT_HALL_W_PIN GPIO_PIN_5 + #elif SEHR_GSCHISSENES_HALL + #define RIGHT_HALL_U_PIN GPIO_PIN_5 + #define RIGHT_HALL_V_PIN GPIO_PIN_7 + #define RIGHT_HALL_W_PIN GPIO_PIN_6 + #else + #define RIGHT_HALL_U_PIN GPIO_PIN_5 + #define RIGHT_HALL_V_PIN GPIO_PIN_6 + #define RIGHT_HALL_W_PIN GPIO_PIN_7 + #endif #define RIGHT_HALL_U_PORT GPIOB #define RIGHT_HALL_V_PORT GPIOB diff --git a/main.cpp b/main.cpp index 26b3724..e0c26cc 100644 --- a/main.cpp +++ b/main.cpp @@ -516,7 +516,7 @@ void updateMotors() /* Make sure to stop BOTH motors in case of an error */ constexpr bool ignoreOtherMotor = -#ifdef FEATURE_IGNORE_OTHER_MOTOR +#ifndef FEATURE_IGNORE_OTHER_MOTOR false #else true @@ -1390,8 +1390,8 @@ void doMotorTest() left.enable = true; left.rtU.r_inpTgt = pwm; - left.rtP.z_ctrlTypSel = uint8_t(ControlType::FieldOrientedControl); - left.rtU.z_ctrlModReq = uint8_t(ControlMode::Speed); + left.rtP.z_ctrlTypSel = uint8_t(ControlType::Sinusoidal); + left.rtU.z_ctrlModReq = uint8_t(ControlMode::Voltage); left.rtP.i_max = (2 * A2BIT_CONV) << 4; left.iDcMax = 4; left.rtP.n_max = 1000 << 4; @@ -1399,9 +1399,9 @@ void doMotorTest() left.rtP.a_phaAdvMax = 40 << 4; right.enable = true; - right.rtU.r_inpTgt = pwm; - right.rtP.z_ctrlTypSel = uint8_t(ControlType::FieldOrientedControl); - right.rtU.z_ctrlModReq = uint8_t(ControlMode::Speed); + right.rtU.r_inpTgt = -pwm; + right.rtP.z_ctrlTypSel = uint8_t(ControlType::Sinusoidal); + right.rtU.z_ctrlModReq = uint8_t(ControlMode::Voltage); right.rtP.i_max = (2 * A2BIT_CONV) << 4; right.iDcMax = 4; right.rtP.n_max = 1000 << 4; @@ -1418,6 +1418,24 @@ void doMotorTest() pwm = -pwmMax; dir = 1; } + + if(left.rtY.z_errCode != 0 || right.rtY.z_errCode != 0) { + if(left.rtY.z_errCode == 0 && right.rtY.z_errCode != 0) { //rechts + buzzer.freq = 1; + buzzer.pattern = 1; + } + if(right.rtY.z_errCode == 0 && left.rtY.z_errCode != 0) { //links + buzzer.freq = 3; + buzzer.pattern = 3; + } + if(right.rtY.z_errCode != 0 && left.rtY.z_errCode != 0) { //beide + buzzer.freq = 5; + buzzer.pattern = 5; + } + } else { + buzzer.freq = 0; + buzzer.pattern = 0; + } } #endif -- 2.50.1 From 3b4e67d740ff96e08fe1453e5aba0e00a806583e Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Fri, 17 Sep 2021 17:35:10 +0200 Subject: [PATCH 2/5] fixed iMotMax and fieldWeakMax overflow (with ~40A) --- bobbycar-protocol | 2 +- main.cpp | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/bobbycar-protocol b/bobbycar-protocol index 2e0f97d..2c6fb11 160000 --- a/bobbycar-protocol +++ b/bobbycar-protocol @@ -1 +1 @@ -Subproject commit 2e0f97d6dd3e71cf01d0859bd332548be2187d24 +Subproject commit 2c6fb114f2ea6e3aed243acea1afd28ca34938c9 diff --git a/main.cpp b/main.cpp index 26b3724..e124438 100644 --- a/main.cpp +++ b/main.cpp @@ -1440,9 +1440,9 @@ void parseCommand() left.iDcMax = command.left.iDcMax; left.rtP.z_ctrlTypSel = uint8_t(command.left.ctrlTyp); - left.rtP.i_max = (command.left.iMotMax * A2BIT_CONV) << 4; + left.rtP.i_max = (int16_t(command.left.iMotMax) * A2BIT_CONV) << 4; left.rtP.n_max = command.left.nMotMax << 4; - left.rtP.id_fieldWeakMax = (command.left.fieldWeakMax * A2BIT_CONV) << 4; + left.rtP.id_fieldWeakMax = (int16_t(command.left.fieldWeakMax) * A2BIT_CONV) << 4; left.rtP.a_phaAdvMax = command.left.phaseAdvMax << 4; left.rtU.z_ctrlModReq = uint8_t(command.left.ctrlMod); left.rtU.r_inpTgt = command.left.pwm; @@ -1450,9 +1450,9 @@ void parseCommand() right.iDcMax = command.right.iDcMax; right.rtP.z_ctrlTypSel = uint8_t(command.right.ctrlTyp); - right.rtP.i_max = (command.right.iMotMax * A2BIT_CONV) << 4; // fixdt(1,16,4) + right.rtP.i_max = (int16_t(command.right.iMotMax) * A2BIT_CONV) << 4; // fixdt(1,16,4) right.rtP.n_max = command.right.nMotMax << 4; // fixdt(1,16,4) - right.rtP.id_fieldWeakMax = (command.right.fieldWeakMax * A2BIT_CONV) << 4; // fixdt(1,16,4) + right.rtP.id_fieldWeakMax = (int16_t(command.right.fieldWeakMax) * A2BIT_CONV) << 4; // fixdt(1,16,4) right.rtP.a_phaAdvMax = command.right.phaseAdvMax << 4; // fixdt(1,16,4) right.rtU.z_ctrlModReq = uint8_t(command.right.ctrlMod); right.rtU.r_inpTgt = command.right.pwm; @@ -1593,14 +1593,14 @@ void applyIncomingCanMessage() case MotorController ::Command::CtrlTyp: right.rtP.z_ctrlTypSel = *((uint8_t*)buf); break; case MotorController::Command::CtrlMod: left .rtU.z_ctrlModReq = *((uint8_t*)buf); break; case MotorController ::Command::CtrlMod: right.rtU.z_ctrlModReq = *((uint8_t*)buf); break; - case MotorController::Command::IMotMax: left .rtP.i_max = (*((uint8_t*)buf) * A2BIT_CONV) << 4; break; - case MotorController ::Command::IMotMax: right.rtP.i_max = (*((uint8_t*)buf) * A2BIT_CONV) << 4; break; + case MotorController::Command::IMotMax: left .rtP.i_max = (int16_t(*((uint8_t*)buf)) * A2BIT_CONV) << 4; break; + case MotorController ::Command::IMotMax: right.rtP.i_max = (int16_t(*((uint8_t*)buf)) * A2BIT_CONV) << 4; break; case MotorController::Command::IDcMax: left .iDcMax = *((uint8_t*)buf); break; case MotorController ::Command::IDcMax: right.iDcMax = *((uint8_t*)buf); break; case MotorController::Command::NMotMax: left .rtP.n_max = *((uint16_t*)buf) << 4; break; case MotorController ::Command::NMotMax: right.rtP.n_max = *((uint16_t*)buf) << 4; break; - case MotorController::Command::FieldWeakMax: left .rtP.id_fieldWeakMax = (*((uint8_t*)buf) * A2BIT_CONV) << 4; break; - case MotorController ::Command::FieldWeakMax: right.rtP.id_fieldWeakMax = (*((uint8_t*)buf) * A2BIT_CONV) << 4; break; + case MotorController::Command::FieldWeakMax: left .rtP.id_fieldWeakMax = (int16_t(*((uint8_t*)buf)) * A2BIT_CONV) << 4; break; + case MotorController ::Command::FieldWeakMax: right.rtP.id_fieldWeakMax = (int16_t(*((uint8_t*)buf)) * A2BIT_CONV) << 4; break; case MotorController::Command::PhaseAdvMax: left .rtP.a_phaAdvMax = *((uint16_t*)buf) << 4; break; case MotorController ::Command::PhaseAdvMax: right.rtP.a_phaAdvMax = *((uint16_t*)buf) << 4; break; case MotorController::Command::CruiseCtrlEna: left .rtP.b_cruiseCtrlEna = *((bool*)buf); break; -- 2.50.1 From 6436fecd858312565b57e412ffb448d964cd1df2 Mon Sep 17 00:00:00 2001 From: Peter Poetzi Date: Thu, 3 Feb 2022 21:08:08 +0100 Subject: [PATCH 3/5] add new hall sensor configs --- config.h | 2 +- defines.h | 20 +++++++++---- main.cpp | 87 +++++++++++++++++++++++++++++++++++++------------------ 3 files changed, 74 insertions(+), 35 deletions(-) diff --git a/config.h b/config.h index d495c51..8fd65f8 100644 --- a/config.h +++ b/config.h @@ -1,6 +1,6 @@ #pragma once -#ifdef GSCHISSENE_PWM_FREQ +#ifdef PWM_FREQ_12KHZ #define PWM_FREQ 12000 // PWM frequency in Hz #else #define PWM_FREQ 16000 // PWM frequency in Hz diff --git a/defines.h b/defines.h index 604d407..9b839c0 100644 --- a/defines.h +++ b/defines.h @@ -23,11 +23,15 @@ #include "stm32f1xx_hal.h" #ifdef PETERS_PLATINE -#ifdef GSCHISSENES_HALL +#ifdef HALL_BCA #define LEFT_HALL_U_PIN GPIO_PIN_10 #define LEFT_HALL_V_PIN GPIO_PIN_11 #define LEFT_HALL_W_PIN GPIO_PIN_12 -#else +#elif HALL_ABC + #define LEFT_HALL_U_PIN GPIO_PIN_12 + #define LEFT_HALL_V_PIN GPIO_PIN_10 + #define LEFT_HALL_W_PIN GPIO_PIN_11 +#else //HALL_ACB #define LEFT_HALL_U_PIN GPIO_PIN_12 #define LEFT_HALL_V_PIN GPIO_PIN_11 #define LEFT_HALL_W_PIN GPIO_PIN_10 @@ -37,11 +41,15 @@ #define LEFT_HALL_V_PORT GPIOC #define LEFT_HALL_W_PORT GPIOC -#ifdef GSCHISSENES_HALL +#ifdef HALL_BCA #define RIGHT_HALL_U_PIN GPIO_PIN_7 #define RIGHT_HALL_V_PIN GPIO_PIN_6 #define RIGHT_HALL_W_PIN GPIO_PIN_5 -#else +#elif HALL_ABC + #define RIGHT_HALL_U_PIN GPIO_PIN_5 + #define RIGHT_HALL_V_PIN GPIO_PIN_7 + #define RIGHT_HALL_W_PIN GPIO_PIN_6 +#else //HALL_ACB #define RIGHT_HALL_U_PIN GPIO_PIN_5 #define RIGHT_HALL_V_PIN GPIO_PIN_6 #define RIGHT_HALL_W_PIN GPIO_PIN_7 @@ -51,7 +59,7 @@ #define RIGHT_HALL_V_PORT GPIOB #define RIGHT_HALL_W_PORT GPIOB #else -#ifdef GSCHISSENES_HALL +#ifdef HALL_BCA #define LEFT_HALL_U_PIN GPIO_PIN_7 #define LEFT_HALL_V_PIN GPIO_PIN_6 #define LEFT_HALL_W_PIN GPIO_PIN_5 @@ -65,7 +73,7 @@ #define LEFT_HALL_V_PORT GPIOB #define LEFT_HALL_W_PORT GPIOB -#ifdef GSCHISSENES_HALL +#ifdef HALL_BCA #define RIGHT_HALL_U_PIN GPIO_PIN_12 #define RIGHT_HALL_V_PIN GPIO_PIN_11 #define RIGHT_HALL_W_PIN GPIO_PIN_10 diff --git a/main.cpp b/main.cpp index e124438..c6b2cf5 100644 --- a/main.cpp +++ b/main.cpp @@ -53,19 +53,19 @@ TIM_HandleTypeDef htim_right; TIM_HandleTypeDef htim_left; ADC_HandleTypeDef hadc1; ADC_HandleTypeDef hadc2; -#ifdef HUARN2 +#ifdef HUART2 UART_HandleTypeDef huart2; #endif -#ifdef HUARN3 +#ifdef HUART3 UART_HandleTypeDef huart3; #endif -#ifdef HUARN2 +#ifdef HUART2 DMA_HandleTypeDef hdma_usart2_rx; DMA_HandleTypeDef hdma_usart2_tx; #endif -#ifdef HUARN3 +#ifdef HUART3 DMA_HandleTypeDef hdma_usart3_rx; DMA_HandleTypeDef hdma_usart3_tx; #endif @@ -129,10 +129,10 @@ template void myPrintf(const char (&format)[formatLength], Targs ... args) { #ifdef LOG_TO_SERIAL -#ifdef HUARN2 +#ifdef HUART2 #define UART_DMA_CHANNEL DMA1_Channel7 #endif -#ifdef HUARN3 +#ifdef HUART3 #define UART_DMA_CHANNEL DMA1_Channel2 #endif @@ -206,11 +206,11 @@ struct { void SystemClock_Config(); -#ifdef HUARN2 +#ifdef HUART2 void UART2_Init(); #endif -#ifdef HUARN3 +#ifdef HUART3 void UART3_Init(); #endif @@ -339,10 +339,10 @@ int main() } buzzer.freq = 0; -#ifdef HUARN2 +#ifdef HUART2 UART2_Init(); #endif -#ifdef HUARN3 +#ifdef HUART3 UART3_Init(); #endif @@ -351,10 +351,10 @@ int main() #endif #ifdef FEATURE_SERIAL_CONTROL -#ifdef HUARN2 +#ifdef HUART2 HAL_UART_Receive_DMA(&huart2, (uint8_t *)&command, sizeof(command)); #endif -#ifdef HUARN3 +#ifdef HUART3 HAL_UART_Receive_DMA(&huart3, (uint8_t *)&command, sizeof(command)); #endif #endif @@ -517,9 +517,9 @@ void updateMotors() constexpr bool ignoreOtherMotor = #ifdef FEATURE_IGNORE_OTHER_MOTOR - false -#else true +#else + false #endif ; @@ -528,9 +528,15 @@ void updateMotors() // ========================= LEFT MOTOR ============================ // Get hall sensors values +#ifdef FEATURE_INVERT_HALL + bool hall_ul = (LEFT_HALL_U_PORT->IDR & LEFT_HALL_U_PIN); + bool hall_vl = (LEFT_HALL_V_PORT->IDR & LEFT_HALL_V_PIN); + bool hall_wl = (LEFT_HALL_W_PORT->IDR & LEFT_HALL_W_PIN); +#else bool hall_ul = !(LEFT_HALL_U_PORT->IDR & LEFT_HALL_U_PIN); bool hall_vl = !(LEFT_HALL_V_PORT->IDR & LEFT_HALL_V_PIN); bool hall_wl = !(LEFT_HALL_W_PORT->IDR & LEFT_HALL_W_PIN); +#endif /* Set motor inputs here */ left.rtU.b_motEna = enableLFin; @@ -558,9 +564,16 @@ void updateMotors() // ========================= RIGHT MOTOR =========================== // Get hall sensors values +#ifdef FEATURE_INVERT_HALL + bool hall_ur = (RIGHT_HALL_U_PORT->IDR & RIGHT_HALL_U_PIN); + bool hall_vr = (RIGHT_HALL_V_PORT->IDR & RIGHT_HALL_V_PIN); + bool hall_wr = (RIGHT_HALL_W_PORT->IDR & RIGHT_HALL_W_PIN); +#else bool hall_ur = !(RIGHT_HALL_U_PORT->IDR & RIGHT_HALL_U_PIN); bool hall_vr = !(RIGHT_HALL_V_PORT->IDR & RIGHT_HALL_V_PIN); bool hall_wr = !(RIGHT_HALL_W_PORT->IDR & RIGHT_HALL_W_PIN); +#endif + /* Set motor inputs here */ right.rtU.b_motEna = enableRFin; @@ -636,7 +649,7 @@ void SystemClock_Config() HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); } -#ifdef HUARN2 +#ifdef HUART2 void UART2_Init() { /* The code below is commented out - otwerwise Serial Receive does not work */ @@ -710,7 +723,7 @@ void UART2_Init() } #endif -#ifdef HUARN3 +#ifdef HUART3 void UART3_Init() { /* The code below is commented out - otwerwise Serial Receive does not work */ @@ -1386,24 +1399,24 @@ void doMotorTest() { using namespace protocol; - timeout = 0; // proove, that the controlling code is still running + timeout = 0; // prove, that the controlling code is still running left.enable = true; left.rtU.r_inpTgt = pwm; left.rtP.z_ctrlTypSel = uint8_t(ControlType::FieldOrientedControl); - left.rtU.z_ctrlModReq = uint8_t(ControlMode::Speed); + left.rtU.z_ctrlModReq = uint8_t(ControlMode::Torque); left.rtP.i_max = (2 * A2BIT_CONV) << 4; - left.iDcMax = 4; + left.iDcMax = 8; left.rtP.n_max = 1000 << 4; left.rtP.id_fieldWeakMax = (0 * A2BIT_CONV) << 4; left.rtP.a_phaAdvMax = 40 << 4; right.enable = true; - right.rtU.r_inpTgt = pwm; + right.rtU.r_inpTgt = -pwm; right.rtP.z_ctrlTypSel = uint8_t(ControlType::FieldOrientedControl); - right.rtU.z_ctrlModReq = uint8_t(ControlMode::Speed); + right.rtU.z_ctrlModReq = uint8_t(ControlMode::Torque); right.rtP.i_max = (2 * A2BIT_CONV) << 4; - right.iDcMax = 4; + right.iDcMax = 8; right.rtP.n_max = 1000 << 4; right.rtP.id_fieldWeakMax = (0 * A2BIT_CONV) << 4; right.rtP.a_phaAdvMax = 40 << 4; @@ -1418,6 +1431,24 @@ void doMotorTest() pwm = -pwmMax; dir = 1; } + + if(left.rtY.z_errCode != 0 || right.rtY.z_errCode != 0) { + if(left.rtY.z_errCode == 0 && right.rtY.z_errCode != 0) { //rechts + buzzer.freq = 1; + buzzer.pattern = 1; + } + if(right.rtY.z_errCode == 0 && left.rtY.z_errCode != 0) { //links + buzzer.freq = 3; + buzzer.pattern = 3; + } + if(right.rtY.z_errCode != 0 && left.rtY.z_errCode != 0) { //beide + buzzer.freq = 5; + buzzer.pattern = 5; + } + } else { + buzzer.freq = 0; + buzzer.pattern = 0; + } } #endif @@ -1482,11 +1513,11 @@ void parseCommand() // Check periodically the received Start Frame. Try to re-sync by reseting the DMA if (main_loop_counter % 25 == 0) { -#ifdef HUARN2 +#ifdef HUART2 HAL_UART_DMAStop(&huart2); HAL_UART_Receive_DMA(&huart2, (uint8_t *)&command, sizeof(command)); #endif -#ifdef HUARN3 +#ifdef HUART3 HAL_UART_DMAStop(&huart3); HAL_UART_Receive_DMA(&huart3, (uint8_t *)&command, sizeof(command)); #endif @@ -1500,10 +1531,10 @@ void sendFeedback() { using namespace protocol::serial; -#ifdef HUARN2 +#ifdef HUART2 #define UART_DMA_CHANNEL DMA1_Channel7 #endif -#ifdef HUARN3 +#ifdef HUART3 #define UART_DMA_CHANNEL DMA1_Channel2 #endif @@ -1935,7 +1966,7 @@ extern "C" void DMA1_Channel1_IRQHandler() /* USER CODE END DMA1_Channel1_IRQn 1 */ } -#ifdef HUARN2 +#ifdef HUART2 extern "C" void DMA1_Channel6_IRQHandler() { /* USER CODE BEGIN DMA1_Channel4_IRQn 0 */ @@ -1964,7 +1995,7 @@ extern "C" void DMA1_Channel7_IRQHandler() } #endif -#ifdef HUARN3 +#ifdef HUART3 /** * @brief This function handles DMA1 channel2 global interrupt. */ -- 2.50.1 From 96a6424baa571c38ce66c888291aea5e0af32533 Mon Sep 17 00:00:00 2001 From: Peter Poetzi Date: Thu, 3 Feb 2022 21:10:31 +0100 Subject: [PATCH 4/5] add new configs for hall --- CMakeLists.txt | 63 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 44 insertions(+), 19 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f5e3dc8..0c76dd7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -63,9 +63,6 @@ add_library(emanuel_foc_model STATIC ) add_library(bobbycar-protocol INTERFACE - bobbycar-protocol/bobbycar-can.h - bobbycar-protocol/bobbycar-common.h - bobbycar-protocol/bobbycar-serial.h ) @@ -79,12 +76,12 @@ target_link_libraries(motortest.elf stm32_hal emanuel_foc_model bobbycar-protoco target_compile_options(motortest.elf PRIVATE -DMOTOR_TEST -DFEATURE_IGNORE_OTHER_MOTOR -# -DGSCHISSENES_HALL -# -DGSCHISSENE_PWM_FREQ +# -DHALL_BCA +# -DPWM_FREQ_12KHZ # -DFEATURE_BUTTON # -DPETERS_PLATINE -# -DHUARN2 -# -DHUARN3 +# -DHUART2 +# -DHUART3 # -DFEATURE_SERIAL_CONTROL # -DFEATURE_SERIAL_FEEDBACK # -DLOG_TO_SERIAL @@ -97,6 +94,34 @@ add_custom_command(OUTPUT motortest.bin COMMAND arm-none-eabi-objcopy -O binary add_custom_target(motortest ALL SOURCES motortest.hex motortest.bin) add_custom_target(flash-motortest COMMAND st-flash --reset write motortest.bin 0x8000000 SOURCES motortest.bin DEPENDS motortest.bin) +# +# motor test peter +# +add_executable(motortest_peter.elf config.h defines.h main.cpp) +target_link_libraries(motortest_peter.elf stm32_hal emanuel_foc_model bobbycar-protocol) +target_compile_options(motortest_peter.elf PRIVATE + #-DMOTOR_TEST + -DFEATURE_IGNORE_OTHER_MOTOR + -DHALL_ABC + # -DPWM_FREQ_12KHZ + # -DFEATURE_BUTTON + -DPETERS_PLATINE + # -DFEATURE_INVERT_HALL + # -DHUART2 + # -DHUART3 + # -DFEATURE_SERIAL_CONTROL + # -DFEATURE_SERIAL_FEEDBACK + # -DLOG_TO_SERIAL + -DFEATURE_CAN + # -DCAN_LOG_UNKNOWN_ADDR + -DIS_BACK +) +add_custom_command(OUTPUT motortest_peter.hex COMMAND arm-none-eabi-objcopy -O ihex motortest_peter.elf motortest_peter.hex DEPENDS motortest_peter.elf) +add_custom_command(OUTPUT motortest_peter.bin COMMAND arm-none-eabi-objcopy -O binary -S motortest_peter.elf motortest_peter.bin DEPENDS motortest_peter.elf) +add_custom_target(motortest_peter ALL SOURCES motortest_peter.hex motortest_peter.bin) +add_custom_target(flash-motortest_peter COMMAND st-flash --reset write motortest_peter.bin 0x8000000 SOURCES motortest_peter.bin DEPENDS motortest_peter.bin) + + # # feedc0de front # @@ -105,12 +130,12 @@ target_link_libraries(feedcode-front.elf stm32_hal emanuel_foc_model bobbycar-pr target_compile_options(feedcode-front.elf PRIVATE # -DMOTOR_TEST -DFEATURE_IGNORE_OTHER_MOTOR - -DGSCHISSENES_HALL -# -DGSCHISSENE_PWM_FREQ + -DHALL_BCA +# -DPWM_FREQ_12KHZ # -DFEATURE_BUTTON -DPETERS_PLATINE -# -DHUARN2 -# -DHUARN3 +# -DHUART2 +# -DHUART3 # -DFEATURE_SERIAL_CONTROL # -DFEATURE_SERIAL_FEEDBACK # -DLOG_TO_SERIAL @@ -131,12 +156,12 @@ target_link_libraries(feedcode-back.elf stm32_hal emanuel_foc_model bobbycar-pro target_compile_options(feedcode-back.elf PRIVATE # -DMOTOR_TEST -DFEATURE_IGNORE_OTHER_MOTOR -# -DGSCHISSENES_HALL -# -DGSCHISSENE_PWM_FREQ +# -DHALL_BCA +# -DPWM_FREQ_12KHZ # -DFEATURE_BUTTON -DPETERS_PLATINE -# -DHUARN2 -# -DHUARN3 +# -DHUART2 +# -DHUART3 # -DFEATURE_SERIAL_CONTROL # -DFEATURE_SERIAL_FEEDBACK # -DLOG_TO_SERIAL @@ -157,12 +182,12 @@ target_link_libraries(greyhash.elf stm32_hal emanuel_foc_model bobbycar-protocol target_compile_options(greyhash.elf PRIVATE # -DMOTOR_TEST -DFEATURE_IGNORE_OTHER_MOTOR -# -DGSCHISSENES_HALL - -DGSCHISSENE_PWM_FREQ +# -DHALL_BCA + -DPWM_FREQ_12KHZ # -DFEATURE_BUTTON -DPETERS_PLATINE -# -DHUARN2 - -DHUARN3 +# -DHUART2 + -DHUART3 -DFEATURE_SERIAL_CONTROL -DFEATURE_SERIAL_FEEDBACK # -DLOG_TO_SERIAL -- 2.50.1 From 70ef49418ba60c5cba87a32018a614c09e9e4288 Mon Sep 17 00:00:00 2001 From: Peter Poetzi Date: Thu, 3 Feb 2022 21:17:51 +0100 Subject: [PATCH 5/5] add more hall configs --- defines.h | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/defines.h b/defines.h index 9b839c0..55d2592 100644 --- a/defines.h +++ b/defines.h @@ -23,7 +23,20 @@ #include "stm32f1xx_hal.h" #ifdef PETERS_PLATINE -#ifdef HALL_BCA + +#ifdef HALL_CAB + #define LEFT_HALL_U_PIN GPIO_PIN_11 + #define LEFT_HALL_V_PIN GPIO_PIN_12 + #define LEFT_HALL_W_PIN GPIO_PIN_10 +#elif HALL_CBA + #define LEFT_HALL_U_PIN GPIO_PIN_11 + #define LEFT_HALL_V_PIN GPIO_PIN_10 + #define LEFT_HALL_W_PIN GPIO_PIN_12 +#elif HALL_BAC + #define LEFT_HALL_U_PIN GPIO_PIN_10 + #define LEFT_HALL_V_PIN GPIO_PIN_12 + #define LEFT_HALL_W_PIN GPIO_PIN_11 +#elif HALL_BCA #define LEFT_HALL_U_PIN GPIO_PIN_10 #define LEFT_HALL_V_PIN GPIO_PIN_11 #define LEFT_HALL_W_PIN GPIO_PIN_12 @@ -41,7 +54,19 @@ #define LEFT_HALL_V_PORT GPIOC #define LEFT_HALL_W_PORT GPIOC -#ifdef HALL_BCA +#ifdef HALL_CAB + #define RIGHT_HALL_U_PIN GPIO_PIN_6 + #define RIGHT_HALL_V_PIN GPIO_PIN_5 + #define RIGHT_HALL_W_PIN GPIO_PIN_7 +#elif HALL_CBA + #define RIGHT_HALL_U_PIN GPIO_PIN_6 + #define RIGHT_HALL_V_PIN GPIO_PIN_7 + #define RIGHT_HALL_W_PIN GPIO_PIN_5 +#elif HALL_BAC + #define RIGHT_HALL_U_PIN GPIO_PIN_7 + #define RIGHT_HALL_V_PIN GPIO_PIN_5 + #define RIGHT_HALL_W_PIN GPIO_PIN_6 +#elif HALL_BCA #define RIGHT_HALL_U_PIN GPIO_PIN_7 #define RIGHT_HALL_V_PIN GPIO_PIN_6 #define RIGHT_HALL_W_PIN GPIO_PIN_5 -- 2.50.1