реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> STM32 Timer Gate mode, (не считает)
-AZ-
сообщение Apr 19 2018, 02:45
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 20-09-15
Пользователь №: 88 488



Добрый день, перед написанием темы перепробовал, как мне кажется, все варианты, подскажите может кто то наступал на это ...
Код ниже, TIM4 master выдает на TRGO - 1 при CNT ENABLE, TIM1 в это время должен считать, но не считает и все тут, в прерывании TIM4 смотрю TIM1 CNT а там 2, не пойму где затык ...(

CODE
void TIM4_IRQHandler(void)
{
TIM4->SR &= ~TIM_SR_UIF;
}

void cnt(void)
{
/* TIM1 init */
RCC->APB2ENR |= RCC_APB2ENR_TIM1EN; /* TIM1 enabled */
TIM1->PSC = 7200 - 1; /* new clock 10kHz */
TIM1->SMCR |= (TIM_SMCR_TS_0 | TIM_SMCR_TS_1); /* internal trigger_3 (ITR3) from TIM4 */
TIM1->SMCR |= (TIM_SMCR_SMS_0 | TIM_SMCR_SMS_2); /* while trigger input (TRGI) is high, counter is on */

/* TIM4 init */
RCC->APB1ENR |= RCC_APB1ENR_TIM4EN;
TIM4->PSC = 7200 - 1; /* new clock 10kHz */
TIM4->ARR = 10000 - 1; /* period 1sec */
TIM4->CR1 |= TIM_CR1_DIR; /* counter used as downcounter */
TIM4->CR1 |= TIM_CR1_OPM; /* counter stops counting at the next update event (clearing the bit CEN) */
TIM4->CR2 |= TIM_CR2_MMS_0; /* COUNTER_ENABLE signal to TIM1, used as trigger output (TRGO) */
TIM4->DIER |= TIM_DIER_UIE; /* interrupt enable */

/* start counter */
NVIC_EnableIRQ(TIM4_IRQn);
TIM1->CR1 |= TIM_CR1_CEN;
TIM4->CR1 |= TIM_CR1_CEN;
}


Сообщение отредактировал IgorKossak - Apr 19 2018, 08:01
Причина редактирования: [codebox] для длинного кода. [code]-для короткого!!!
Go to the top of the page
 
+Quote Post
HardEgor
сообщение Apr 19 2018, 04:11
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925



Какой конкретно SMT32?
Go to the top of the page
 
+Quote Post
-AZ-
сообщение Apr 19 2018, 04:17
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 20-09-15
Пользователь №: 88 488



Цитата(HardEgor @ Apr 19 2018, 07:11) *
Какой конкретно SMT32?

STM32F103VCT6
Go to the top of the page
 
+Quote Post
ViKo
сообщение Apr 19 2018, 05:09
Сообщение #4


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



TIM1->ARR?
Go to the top of the page
 
+Quote Post
-AZ-
сообщение Apr 19 2018, 05:22
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 20-09-15
Пользователь №: 88 488



Цитата(ViKo @ Apr 19 2018, 08:09) *
TIM1->ARR?

По default = 0xFFFF
Go to the top of the page
 
+Quote Post
mcheb
сообщение Apr 19 2018, 05:36
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 30-05-06
Пользователь №: 17 602



На APB1 максимальная частота 36 МГц
Go to the top of the page
 
+Quote Post
-AZ-
сообщение Apr 19 2018, 05:45
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 20-09-15
Пользователь №: 88 488



Цитата(mcheb @ Apr 19 2018, 08:36) *
На APB1 максимальная частота 36 МГц

APB1 peripheral clocks = 36MHz
APB1 timer clocks = 72MHz

Сообщение отредактировал -AZ- - Apr 19 2018, 05:47
Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 19 2018, 06:05
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Может, я что-то не понимаю, но TIM4 начинает считать с нуля, считает вниз, то есть 0->0xFFFF, потом сразу Update Event, и он выключается. Ну тогда естественно, что TIM1 успеет дёрнуться пару раз и заглохнет. Логично?
Go to the top of the page
 
+Quote Post
-AZ-
сообщение Apr 19 2018, 06:09
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 20-09-15
Пользователь №: 88 488



Цитата(scifi @ Apr 19 2018, 09:05) *
Может, я что-то не понимаю, но TIM4 начинает считать с нуля, считает вниз, то есть 0->0xFFFF, потом сразу Update Event, и он выключается. Ну тогда естественно, что TIM1 успеет дёрнуться пару раз и заглохнет. Логично?

Не, при счете вниз, он считает от значения регистра ARR т.е. (10000-1) до 0
TIM4 четко через 1 сек. падает в прерывание

Сообщение отредактировал -AZ- - Apr 19 2018, 06:12
Go to the top of the page
 
+Quote Post
scifi
сообщение Apr 19 2018, 06:57
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Может быть, в порядке удара в бубен сделать им при инициализации Update? TIMn->EGR |= TIM_EGR_UG
Go to the top of the page
 
+Quote Post
-AZ-
сообщение Apr 19 2018, 08:47
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 85
Регистрация: 20-09-15
Пользователь №: 88 488



Цитата(scifi @ Apr 19 2018, 09:57) *
Может быть, в порядке удара в бубен сделать им при инициализации Update? TIMn->EGR |= TIM_EGR_UG

Попробовал добавил строки, после инициализации PSC и ARR обоих таймеров:

TIMn->EGR = TIM_EGR_UG;
TIMn->SR = 0;

Значение в TIM1->CNT изменилось с 2 на 1, больше ничего ...(
Go to the top of the page
 
+Quote Post
HardEgor
сообщение Apr 19 2018, 17:20
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925



Что-то не вижу выбора бита в SMCR для TIM1:
Bit 7 MSM: Master/slave mode
0: No action
1: The effect of an event on the trigger input (TRGI) is delayed to allow a perfect
synchronization between the current timer and its slaves (through TRGO). It is useful if we
want to synchronize several timers on a single external event.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 12:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01437 секунд с 7
ELECTRONIX ©2004-2016