/
OhrimenkoDI
/
RoboStepROS
Обзор
Документация
Войти
/
OhrimenkoDI
/
RoboStepROS
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
uTimEnc.mpas
136 строк
4 KB
OhrimenkoDI
Альфа версия одометрии
15 апр 2025, 12:33
15 апр 2025, 12:33
67fc2ee
Код
Авторство
О чём код?
unit uTimEnc; Procedure TimEncoderInit(); implementation Procedure TimEncoderInit(); begin /////////////////////////////////// RCC_APB1ENR.TIM2EN := 1; // включили таймер в переферии // TIM2 - таймер энкодера GPIO_Alternate_Function_Enable(@_GPIO_MODULE_TIM2_CH1_PA15); GPIO_Alternate_Function_Enable(@_GPIO_MODULE_TIM2_CH2_PB3); // таймер используем для отсчета времени цыкла программы CEN_TIM2_CR1_bit := 0; // Счетчик выключен TIM2EN_bit := 1; // включили таймер RCC_APB1ENR // 1. настройка входа от энкодера CC1S0_TIM2_CCMR1_Input_bit := 0; CC1S1_TIM2_CCMR1_Input_bit := 1; ////////////////////////////////// CC2S1_TIM2_CCMR1_Input_bit := 0; CC2S0_TIM2_CCMR1_Input_bit := 1; // 2. Фильтр IC2F0_TIM2_CCMR1_Input_bit :=0; IC2F1_TIM2_CCMR1_Input_bit :=0; IC2F2_TIM2_CCMR1_Input_bit :=0; IC2F3_TIM2_CCMR1_Input_bit :=0; ///////////////////////////////////////// IC1F0_TIM2_CCMR1_Input_bit :=0; IC1F1_TIM2_CCMR1_Input_bit :=0; IC1F2_TIM2_CCMR1_Input_bit :=0; IC1F3_TIM2_CCMR1_Input_bit :=0; // 3. Полярность CC1P_TIM2_CCER_bit := 0; CC1NP_TIM2_CCER_bit:= 0; //////////////////////// CC2P_TIM2_CCER_bit := 0; CC2NP_TIM2_CCER_bit:= 0; // 4. Внешний вход SMS0_TIM2_SMCR_bit := 1; SMS1_TIM2_SMCR_bit := 1; SMS2_TIM2_SMCR_bit := 0; // 5. Куда какай канал TS0_TIM2_SMCR_bit := 0; TS1_TIM2_SMCR_bit := 1; TS2_TIM2_SMCR_bit := 1; TIM2_CNT := 0x0000; TIM2_PSC := 1-1; // педварительный регистр TIM2_ARR := 256-1; NVIC_IntEnable(IVT_INT_TIM2); UIE_TIM2_DIER_bit := 1; // 1: Update interrupt enabled UG_TIM2_EGR_bit :=1 ; // обновить все буферные регистры CEN_TIM2_CR1_bit := 1; // Счетчик выключен ///////////////////////////////////////////////////////////////////////// /////////////////////////////////// RCC_APB1ENR.TIM5EN := 1; // включили таймер в переферии // TIM5 - таймер энкодера GPIO_Alternate_Function_Enable(@_GPIO_MODULE_TIM5_CH1_PA0); GPIO_Alternate_Function_Enable(@_GPIO_MODULE_TIM5_CH2_PA1); // таймер используем для отсчета времени цыкла программы CEN_TIM5_CR1_bit := 0; // Счетчик выключен TIM5EN_bit := 1; // включили таймер RCC_APB1ENR // 1. настройка входа от энкодера CC1S0_TIM5_CCMR1_Input_bit := 0; CC1S1_TIM5_CCMR1_Input_bit := 1; ////////////////////////////////// CC2S1_TIM5_CCMR1_Input_bit := 0; CC2S0_TIM5_CCMR1_Input_bit := 1; // 2. Фильтр IC2F0_TIM5_CCMR1_Input_bit :=0; IC2F1_TIM5_CCMR1_Input_bit :=0; IC2F2_TIM5_CCMR1_Input_bit :=0; IC2F3_TIM5_CCMR1_Input_bit :=0; ///////////////////////////////////////// IC1F0_TIM5_CCMR1_Input_bit :=0; IC1F1_TIM5_CCMR1_Input_bit :=0; IC1F2_TIM5_CCMR1_Input_bit :=0; IC1F3_TIM5_CCMR1_Input_bit :=0; // 3. Полярность CC1P_TIM5_CCER_bit := 0; CC1NP_TIM5_CCER_bit:= 0; //////////////////////// CC2P_TIM5_CCER_bit := 0; CC2NP_TIM5_CCER_bit:= 0; // 4. Внешний вход SMS0_TIM5_SMCR_bit := 1; SMS1_TIM5_SMCR_bit := 1; SMS2_TIM5_SMCR_bit := 0; // 5. Куда какай канал TS0_TIM5_SMCR_bit := 0; TS1_TIM5_SMCR_bit := 1; TS2_TIM5_SMCR_bit := 1; TIM5_CNT := 0x0000; TIM5_PSC := 1-1; // педварительный регистр TIM5_ARR := 256-1; NVIC_IntEnable(IVT_INT_TIM5); UIE_TIM5_DIER_bit := 1; // 1: Update interrupt enabled UG_TIM5_EGR_bit :=1 ; // обновить все буферные регистры CEN_TIM5_CR1_bit := 1; // Счетчик выключен ///////////////////////////////////////////////////////////////////////// {} end; end.