added current monitoring to pcb, many code fixes for the protocol / feed control logic, completely reworked diagnostic tool

This commit is contained in:
janik
2026-03-30 17:46:52 +07:00
parent 33426570bb
commit a69055b0d4
119 changed files with 31311 additions and 26899 deletions

View File

@@ -65,6 +65,12 @@ void Error_Handler(void);
#define PEEL1_GPIO_Port GPIOA
#define PEEL2_Pin GPIO_PIN_3
#define PEEL2_GPIO_Port GPIOA
#define ONEWIRE_Pin GPIO_PIN_6
#define ONEWIRE_GPIO_Port GPIOA
#define IPROP_PEEL_Pin GPIO_PIN_7
#define IPROP_PEEL_GPIO_Port GPIOA
#define IPROP_DRIVE_Pin GPIO_PIN_12
#define IPROP_DRIVE_GPIO_Port GPIOB
#define DRIVE1_Pin GPIO_PIN_8
#define DRIVE1_GPIO_Port GPIOA
#define DRIVE2_Pin GPIO_PIN_9
@@ -73,8 +79,6 @@ void Error_Handler(void);
#define QUAD_A_GPIO_Port GPIOC
#define QUAD_B_Pin GPIO_PIN_7
#define QUAD_B_GPIO_Port GPIOC
#define ONEWIRE_Pin GPIO_PIN_10
#define ONEWIRE_GPIO_Port GPIOA
#define LED_R_Pin GPIO_PIN_3
#define LED_R_GPIO_Port GPIOB
#define LED_B_Pin GPIO_PIN_4

View File

@@ -82,8 +82,8 @@ static inline pid_motor_cmd_t pid_update_motor(pid_i32_t *pid,
int32_t error = setpoint - position;
// Deadband: if within ±3 counts, hold position and reset integrator
if (error >= -3 && error <= 3) {
// Deadband: if within ±1 count (~0.005mm), hold position and reset integrator
if (error >= -1 && error <= 1) {
pid->integrator = 0;
pid->prev_error = 0;
pid->last_output = 0;

View File

@@ -35,7 +35,7 @@ extern "C" {
* @brief This is the list of modules to be used in the HAL driver
*/
#define HAL_MODULE_ENABLED
/* #define HAL_ADC_MODULE_ENABLED */
#define HAL_ADC_MODULE_ENABLED
/* #define HAL_CRC_MODULE_ENABLED */
/* #define HAL_CRYP_MODULE_ENABLED */
/* #define HAL_I2C_MODULE_ENABLED */

View File

@@ -57,6 +57,7 @@ void DMA1_Channel2_3_IRQHandler(void);
void TIM14_IRQHandler(void);
void TIM16_IRQHandler(void);
void TIM17_IRQHandler(void);
void USART2_IRQHandler(void);
/* USER CODE BEGIN EFP */
/* USER CODE END EFP */

File diff suppressed because it is too large Load Diff

View File

@@ -82,6 +82,89 @@ void HAL_MspInit(void)
/* USER CODE END MspInit 1 */
}
/**
* @brief ADC MSP Initialization
* This function configures the hardware resources used in this example
* @param hadc: ADC handle pointer
* @retval None
*/
void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
RCC_PeriphCLKInitTypeDef PeriphClkInit = {0};
if(hadc->Instance==ADC1)
{
/* USER CODE BEGIN ADC1_MspInit 0 */
/* USER CODE END ADC1_MspInit 0 */
/** Initializes the peripherals clocks
*/
PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC;
PeriphClkInit.AdcClockSelection = RCC_ADCCLKSOURCE_SYSCLK;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
{
Error_Handler();
}
/* Peripheral clock enable */
__HAL_RCC_ADC_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
/**ADC1 GPIO Configuration
PA7 ------> ADC1_IN7
PB12 ------> ADC1_IN22
*/
GPIO_InitStruct.Pin = IPROP_PEEL_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(IPROP_PEEL_GPIO_Port, &GPIO_InitStruct);
GPIO_InitStruct.Pin = IPROP_DRIVE_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(IPROP_DRIVE_GPIO_Port, &GPIO_InitStruct);
/* USER CODE BEGIN ADC1_MspInit 1 */
/* USER CODE END ADC1_MspInit 1 */
}
}
/**
* @brief ADC MSP De-Initialization
* This function freeze the hardware resources used in this example
* @param hadc: ADC handle pointer
* @retval None
*/
void HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc)
{
if(hadc->Instance==ADC1)
{
/* USER CODE BEGIN ADC1_MspDeInit 0 */
/* USER CODE END ADC1_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_ADC_CLK_DISABLE();
/**ADC1 GPIO Configuration
PA7 ------> ADC1_IN7
PB12 ------> ADC1_IN22
*/
HAL_GPIO_DeInit(IPROP_PEEL_GPIO_Port, IPROP_PEEL_Pin);
HAL_GPIO_DeInit(IPROP_DRIVE_GPIO_Port, IPROP_DRIVE_Pin);
/* USER CODE BEGIN ADC1_MspDeInit 1 */
/* USER CODE END ADC1_MspDeInit 1 */
}
}
/**
* @brief TIM_Base MSP Initialization
* This function configures the hardware resources used in this example
@@ -413,6 +496,9 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart)
__HAL_LINKDMA(huart,hdmatx,hdma_usart2_tx);
/* USART2 interrupt Init */
HAL_NVIC_SetPriority(USART2_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(USART2_IRQn);
/* USER CODE BEGIN USART2_MspInit 1 */
/* USER CODE END USART2_MspInit 1 */
@@ -464,6 +550,9 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* huart)
/* USART2 DMA DeInit */
HAL_DMA_DeInit(huart->hdmarx);
HAL_DMA_DeInit(huart->hdmatx);
/* USART2 interrupt DeInit */
HAL_NVIC_DisableIRQ(USART2_IRQn);
/* USER CODE BEGIN USART2_MspDeInit 1 */
/* USER CODE END USART2_MspDeInit 1 */

View File

@@ -60,6 +60,7 @@ extern TIM_HandleTypeDef htim16;
extern TIM_HandleTypeDef htim17;
extern DMA_HandleTypeDef hdma_usart2_rx;
extern DMA_HandleTypeDef hdma_usart2_tx;
extern UART_HandleTypeDef huart2;
/* USER CODE BEGIN EV */
/* USER CODE END EV */
@@ -229,6 +230,20 @@ void TIM17_IRQHandler(void)
/* USER CODE END TIM17_IRQn 1 */
}
/**
* @brief This function handles USART2 interrupt.
*/
void USART2_IRQHandler(void)
{
/* USER CODE BEGIN USART2_IRQn 0 */
/* USER CODE END USART2_IRQn 0 */
HAL_UART_IRQHandler(&huart2);
/* USER CODE BEGIN USART2_IRQn 1 */
/* USER CODE END USART2_IRQn 1 */
}
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */