Вс окт 17, 2021 08:25:54
Пн окт 18, 2021 19:26:06
static inline void timers_setup(){
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;
/* (1) Configure TI1FP1 on TI1 (CC1S = 01)
configure TI1FP2 on TI2 (CC2S = 01) */
/* (2) Configure TI1FP1 and TI1FP2 non inverted (CC1P = CC2P = 0, reset value) */
/* (3) Configure both inputs are active on both rising and falling edges
(SMS = 011), set external trigger filter to f_DTS/8, N=6 (ETF=1000) */
/* (4) Enable the counter by writing CEN=1 in the TIMx_CR1 register. */
TIM3->CCMR1 = TIM_CCMR1_CC1S_0 | TIM_CCMR1_CC2S_0; /* (1)*/
/* (2) */
TIM3->SMCR = TIM_SMCR_ETF_3 | TIM_SMCR_SMS_0 | TIM_SMCR_SMS_1; /* (3) */
// enable update interrupt
TIM3->DIER = TIM_DIER_UIE;
// set ARR to 79 - generate interrupt each 80 counts (one revolution)
TIM3->ARR = 79;
// enable timer
TIM3->CR1 = TIM_CR1_CEN; /* (4) */
NVIC_EnableIRQ(TIM3_IRQn);
}
if (CNT_EN){
if ((CNT_TIM3_old==1)&&(cnt_dir!=1)&&(TIM3_CNT > 32767))
CNT_Val_Reg = (s32)(CNT_Val_Reg - 65536), CNT_TIM3_old = 65534, cnt_dir = 1;
if ((CNT_TIM3_old==65534)&&(cnt_dir!=2)&&(TIM3_CNT < 32767))
CNT_Val_Reg = (s32)(CNT_Val_Reg + 65536), CNT_TIM3_old = 1, cnt_dir = 2;
}
TIM_ICInitTypeDef TIM_ICInitStructure;
//Enter the content in the structure by default
TIM_ICStructInit(&TIM_ICInitStructure);
//выбрать входной терминал IC1
TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
//Захват фронт
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
//сопоставлен с TI1
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
//Настроить входное частотное деление замеряемого сигнала, не делим чтоб не потерять
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
//filter value fSAMPLING=fDTS/32, выборка N=8.
TIM_ICInitStructure.TIM_ICFilter = 15;
//Initialize the specified parameters in TIM_ICInitStructure TIM3
TIM_ICInit(TIM3, &TIM_ICInitStructure);
Вт окт 19, 2021 07:59:37
да потому что дребезг я отфильтровать расчетным путем не смог
Вт окт 19, 2021 09:50:53
Вт окт 19, 2021 10:50:25
да потому что дребезг я отфильтровать расчетным путем не смог
Вт окт 19, 2021 10:58:43
Вт окт 19, 2021 12:17:47
Вт окт 19, 2021 12:51:55
Вт окт 19, 2021 12:58:01
Вт окт 19, 2021 13:19:32
Ну как сказать, один тик плохо отрабатывает, особенно при навигации в меню жутко не удобно, может на два три пункта перескочить.Eddy_Em писал(а):и что, все равно не фильтрует?
не пробовал.Eddy_Em писал(а):А если APB prescaler на 1/16?
Вт окт 19, 2021 13:36:00
Ср ноя 03, 2021 15:22:08
Ср ноя 03, 2021 16:04:22
Ср ноя 03, 2021 23:16:32
Вт июн 20, 2023 10:20:55
Ср июн 21, 2023 06:03:32
alex_ писал(а):на цепи лежит объект, цепь при этом перемещается, на цепи установлен инкрементальный энкодер
Ср июн 21, 2023 10:22:48
Ср июн 21, 2023 11:18:47
Ср июн 21, 2023 13:48:35
Ср июн 21, 2023 14:19:00
alex_ писал(а):счётчик сбрасывается в ноль и формируется прерывание. Хочу сделать всё на аппаратном уровне без заморочки с регистрами сравнения.