feat: 推送编码器双边采样更改

This commit is contained in:
bmy
2024-08-03 12:33:23 +08:00
parent c9da340c46
commit cb5e6f848c
6 changed files with 83 additions and 18 deletions

View File

@@ -3,7 +3,6 @@
"type": "ARM",
"dependenceList": [],
"srcDirs": [
".eide/deps",
"3rd-part",
"app"
],
@@ -132,14 +131,12 @@
"project/inc",
".cmsis/include",
"project/MDK_V5/RTE/_BC2D",
".eide/deps",
"3rd-part/dwt_delay",
"3rd-part/PID-Library",
"app",
"3rd-part/lwprintf"
],
"libList": [],
"sourceDirList": [],
"defineList": [
"AT32F413CBT7",
"USE_STDPERIPH_DRIVER"
@@ -147,5 +144,5 @@
}
}
},
"version": "3.3"
"version": "3.4"
}

View File

@@ -54,12 +54,18 @@
<ModeSub name="Multi-Channels" value="Encoder_Mode"/>
<ModeSub name="Activated" value="TRUE"/>
</Mode>
<Parameters>
<ParametersSub name="EncoderMode" value="TMR_ENCODER_MODE_C"/>
</Parameters>
</TMR2>
<TMR3>
<Mode>
<ModeSub name="Multi-Channels" value="Encoder_Mode"/>
<ModeSub name="Activated" value="TRUE"/>
</Mode>
<Parameters>
<ParametersSub name="EncoderMode" value="TMR_ENCODER_MODE_C"/>
</Parameters>
</TMR3>
<TMR4>
<Mode>
@@ -135,7 +141,7 @@
</PINInfo>
<ProjectInfomation>
<ProjectName>BC2D</ProjectName>
<ProjectLocation>C:/Users/ForgotDoge/Desktop/BC2024/firmware</ProjectLocation>
<ProjectLocation>/home/evan/Desktop/Workplace</ProjectLocation>
<ToolchainIDE>MDK_V5</ToolchainIDE>
<KeepUserCode>true</KeepUserCode>
<MinHeapSize>0x200</MinHeapSize>

View File

@@ -37,7 +37,7 @@ int16_t by_motion_get_speed_m1(void)
#define alpha (0.1f)
static float last_speed = 0.0f;
param_m1.real_speed = alpha * last_speed + (1.0f - alpha) * (float)(-1 * (int16_t)tmr_counter_value_get(TMR2));
last_speed = param_m1.real_speed;
last_speed = param_m1.real_speed;
tmr_counter_value_set(TMR2, 0);
return (int16_t)param_m1.real_speed;
#undef alpha
@@ -48,7 +48,7 @@ int16_t by_motion_get_speed_m2(void)
#define alpha (0.1f)
static float last_speed = 0.0f;
param_m2.real_speed = alpha * last_speed + (1.0f - alpha) * (float)(-1 * (int16_t)tmr_counter_value_get(TMR3));
last_speed = param_m2.real_speed;
last_speed = param_m2.real_speed;
tmr_counter_value_set(TMR3, 0);
return (int16_t)param_m2.real_speed;
#undef alpha
@@ -118,13 +118,13 @@ void by_motion_can_handle(uint16_t stdd_id, const uint8_t *data, uint8_t len)
#if defined(BC2D_MODEL1)
int16_t speed_m1_temp = (int16_t)(data[0] | (data[1] << 8));
int16_t speed_m2_temp = (int16_t)(data[2] | (data[3] << 8));
by_motion_set_speed_m1(speed_m1_temp);
by_motion_set_speed_m2(speed_m2_temp);
by_motion_set_speed_m1(speed_m1_temp * 2);
by_motion_set_speed_m2(speed_m2_temp * 2);
#elif defined(BC2D_MODEL2)
int16_t speed_m1_temp = (int16_t)(data[4] | (data[5] << 8));
int16_t speed_m2_temp = (int16_t)(data[6] | (data[7] << 8));
by_motion_set_speed_m1(speed_m1_temp);
by_motion_set_speed_m2(speed_m2_temp);
by_motion_set_speed_m1(speed_m1_temp * 2);
by_motion_set_speed_m2(speed_m2_temp * 2);
#endif
}

View File

@@ -55,6 +55,65 @@ extern "C" {
/* add user code end exported macro */
/* add user code begin dma define */
/* user can only modify the dma define value */
//#define DMA1_CHANNEL1_BUFFER_SIZE 0
//#define DMA1_CHANNEL1_MEMORY_BASE_ADDR 0
//#define DMA1_CHANNEL1_PERIPHERAL_BASE_ADDR 0
//#define DMA1_CHANNEL2_BUFFER_SIZE 0
//#define DMA1_CHANNEL2_MEMORY_BASE_ADDR 0
//#define DMA1_CHANNEL2_PERIPHERAL_BASE_ADDR 0
//#define DMA1_CHANNEL3_BUFFER_SIZE 0
//#define DMA1_CHANNEL3_MEMORY_BASE_ADDR 0
//#define DMA1_CHANNEL3_PERIPHERAL_BASE_ADDR 0
//#define DMA1_CHANNEL4_BUFFER_SIZE 0
//#define DMA1_CHANNEL4_MEMORY_BASE_ADDR 0
//#define DMA1_CHANNEL4_PERIPHERAL_BASE_ADDR 0
//#define DMA1_CHANNEL5_BUFFER_SIZE 0
//#define DMA1_CHANNEL5_MEMORY_BASE_ADDR 0
//#define DMA1_CHANNEL5_PERIPHERAL_BASE_ADDR 0
//#define DMA1_CHANNEL6_BUFFER_SIZE 0
//#define DMA1_CHANNEL6_MEMORY_BASE_ADDR 0
//#define DMA1_CHANNEL6_PERIPHERAL_BASE_ADDR 0
//#define DMA1_CHANNEL7_BUFFER_SIZE 0
//#define DMA1_CHANNEL7_MEMORY_BASE_ADDR 0
//#define DMA1_CHANNEL7_PERIPHERAL_BASE_ADDR 0
//#define DMA2_CHANNEL1_BUFFER_SIZE 0
//#define DMA2_CHANNEL1_MEMORY_BASE_ADDR 0
//#define DMA2_CHANNEL1_PERIPHERAL_BASE_ADDR 0
//#define DMA2_CHANNEL2_BUFFER_SIZE 0
//#define DMA2_CHANNEL2_MEMORY_BASE_ADDR 0
//#define DMA2_CHANNEL2_PERIPHERAL_BASE_ADDR 0
//#define DMA2_CHANNEL3_BUFFER_SIZE 0
//#define DMA2_CHANNEL3_MEMORY_BASE_ADDR 0
//#define DMA2_CHANNEL3_PERIPHERAL_BASE_ADDR 0
//#define DMA2_CHANNEL4_BUFFER_SIZE 0
//#define DMA2_CHANNEL4_MEMORY_BASE_ADDR 0
//#define DMA2_CHANNEL4_PERIPHERAL_BASE_ADDR 0
//#define DMA2_CHANNEL5_BUFFER_SIZE 0
//#define DMA2_CHANNEL5_MEMORY_BASE_ADDR 0
//#define DMA2_CHANNEL5_PERIPHERAL_BASE_ADDR 0
//#define DMA2_CHANNEL6_BUFFER_SIZE 0
//#define DMA2_CHANNEL6_MEMORY_BASE_ADDR 0
//#define DMA2_CHANNEL6_PERIPHERAL_BASE_ADDR 0
//#define DMA2_CHANNEL7_BUFFER_SIZE 0
//#define DMA2_CHANNEL7_MEMORY_BASE_ADDR 0
//#define DMA2_CHANNEL7_PERIPHERAL_BASE_ADDR 0
/* add user code end dma define */
/* exported functions ------------------------------------------------------- */
/* system clock config. */
void wk_system_clock_config(void);

View File

@@ -470,7 +470,7 @@ void wk_tmr2_init(void)
tmr_input_struct.input_filter_value = 0;
tmr_input_channel_init(TMR2, &tmr_input_struct, TMR_CHANNEL_INPUT_DIV_1);
tmr_encoder_mode_config(TMR2, TMR_ENCODER_MODE_A, TMR_INPUT_RISING_EDGE, TMR_INPUT_RISING_EDGE);
tmr_encoder_mode_config(TMR2, TMR_ENCODER_MODE_C, TMR_INPUT_RISING_EDGE, TMR_INPUT_RISING_EDGE);
tmr_counter_enable(TMR2, TRUE);
@@ -538,7 +538,7 @@ void wk_tmr3_init(void)
tmr_input_struct.input_filter_value = 0;
tmr_input_channel_init(TMR3, &tmr_input_struct, TMR_CHANNEL_INPUT_DIV_1);
tmr_encoder_mode_config(TMR3, TMR_ENCODER_MODE_A, TMR_INPUT_RISING_EDGE, TMR_INPUT_RISING_EDGE);
tmr_encoder_mode_config(TMR3, TMR_ENCODER_MODE_C, TMR_INPUT_RISING_EDGE, TMR_INPUT_RISING_EDGE);
tmr_counter_enable(TMR3, TRUE);

View File

@@ -68,10 +68,10 @@
/* add user code end 0 */
/**
* @brief main function.
* @param none
* @retval none
*/
* @brief main function.
* @param none
* @retval none
*/
int main(void)
{
/* add user code begin 1 */
@@ -124,8 +124,11 @@ int main(void)
LOGI("init done");
/* add user code end 2 */
while (1) {
while(1)
{
/* add user code begin 3 */
// lwprintf("%f,%f,%f\r\n", param_m1.target_speed, param_m1.real_speed, param_m1.out_pwm / 10);
// DWT_Delay(20000);
/* add user code end 3 */
}
}