2 Commits

Author SHA1 Message Date
cd69f0b894 Merge pull request #21 from bobbycar-graz/wno-volatile
Ignore -Wvolatile warnings from STM32 HAL
2023-04-14 16:58:08 +02:00
323db30bc1 Ignore -Wvolatile warnings from STM32 HAL 2023-04-13 04:18:49 +02:00
3 changed files with 7 additions and 61 deletions

View File

@ -11,7 +11,7 @@ SET(CMAKE_SYSTEM_NAME Generic)
set(COMMON_FLAGS "-mcpu=cortex-m3 -mthumb -Wall -fdata-sections -ffunction-sections")
set(CMAKE_ASM_FLAGS "${COMMON_FLAGS} -x assembler-with-cpp")
set(CMAKE_C_FLAGS "${COMMON_FLAGS}")
set(CMAKE_CXX_FLAGS "${COMMON_FLAGS}")
set(CMAKE_CXX_FLAGS "${COMMON_FLAGS} -Wno-volatile")
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 20)
@ -276,7 +276,6 @@ target_compile_options(pcbv2_front.elf PRIVATE
# -DCAN_LOG_UNKNOWN_ADDR
# -DIS_BACK
-DAMPERE2BIT_CONV=28
-DFEATURE_UVLO
)
add_custom_command(OUTPUT pcbv2_front.hex COMMAND arm-none-eabi-objcopy -O ihex pcbv2_front.elf pcbv2_front.hex DEPENDS pcbv2_front.elf)
add_custom_command(OUTPUT pcbv2_front.bin COMMAND arm-none-eabi-objcopy -O binary -S pcbv2_front.elf pcbv2_front.bin DEPENDS pcbv2_front.elf)
@ -304,7 +303,6 @@ target_compile_options(pcbv2_back.elf PRIVATE
# -DCAN_LOG_UNKNOWN_ADDR
-DIS_BACK
-DAMPERE2BIT_CONV=28
-DFEATURE_UVLO
)
add_custom_command(OUTPUT pcbv2_back.hex COMMAND arm-none-eabi-objcopy -O ihex pcbv2_back.elf pcbv2_back.hex DEPENDS pcbv2_back.elf)
add_custom_command(OUTPUT pcbv2_back.bin COMMAND arm-none-eabi-objcopy -O binary -S pcbv2_back.elf pcbv2_back.bin DEPENDS pcbv2_back.elf)

View File

@ -40,10 +40,6 @@
#include "bobbycar-can.h"
#endif
#ifdef FEATURE_UVLO
#include "uvlo.h"
#endif
extern "C" {
#include "BLDC_controller.h"
extern const P rtP_Left; // default settings defined in BLDC_controller_data.c
@ -512,25 +508,17 @@ void updateMotors()
const bool leftEnable = left.enable.load();
const bool rightEnable = right.enable.load();
bool enableAny = timeoutVal <= 500;
#ifdef FEATURE_UVLO
enableAny = enableAny && !UVLO::isLockedOut();
#endif
bool enableL = enableAny && leftEnable && !chopL;
bool enableR = enableAny && rightEnable && !chopR;
// Disable PWM when current limit is reached (current chopping)
// This is the Level 2 of current protection. The Level 1 should kick in first given by I_MOT_MAX
if (enableL)
LEFT_TIM->BDTR |= TIM_BDTR_MOE;
else
if (chopL || timeoutVal > 500 || !leftEnable)
LEFT_TIM->BDTR &= ~TIM_BDTR_MOE;
if (enableR)
RIGHT_TIM->BDTR |= TIM_BDTR_MOE;
else
LEFT_TIM->BDTR |= TIM_BDTR_MOE;
if (chopR || timeoutVal > 500 || !rightEnable)
RIGHT_TIM->BDTR &= ~TIM_BDTR_MOE;
else
RIGHT_TIM->BDTR |= TIM_BDTR_MOE;
// ############################### MOTOR CONTROL ###############################
@ -1836,10 +1824,6 @@ void updateSensors()
static int32_t batVoltageFixdt = (400 * BAT_CELLS * BAT_CALIB_ADC) / BAT_CALIB_REAL_VOLTAGE << 20;
filtLowPass32(adc_buffer.batt1, BAT_FILT_COEF, batVoltageFixdt);
batVoltage = (int16_t)(batVoltageFixdt >> 20); // convert fixed-point to integer
#ifdef FEATURE_UVLO
UVLO::update(adc_buffer.batt1);
#endif
}
void applyDefaultSettings()

36
uvlo.h
View File

@ -1,36 +0,0 @@
#pragma once
#include "config.h"
namespace UVLO
{
static constexpr uint32_t NUM_MEASUREMENTS = 50;
static constexpr uint32_t MIN_VOLTAGE = 1500 * BAT_CALIB_ADC / BAT_CALIB_REAL_VOLTAGE;
static uint32_t measurements = 0;
static uint32_t sum = 0;
static bool locked_out = true;
static void update(uint16_t voltage)
{
if (measurements < NUM_MEASUREMENTS)
{
sum += voltage;
measurements++;
if (measurements == NUM_MEASUREMENTS && sum / NUM_MEASUREMENTS >= MIN_VOLTAGE)
locked_out = false;
}
}
static bool isDone()
{
return measurements >= NUM_MEASUREMENTS;
}
static bool isLockedOut()
{
return locked_out;
}
} // namespace