-=az=- 0 19 апреля, 2018 Опубликовано 19 апреля, 2018 (изменено) · Жалоба Добрый день, перед написанием темы перепробовал, как мне кажется, все варианты, подскажите может кто то наступал на это ... Код ниже, TIM4 master выдает на TRGO - 1 при CNT ENABLE, TIM1 в это время должен считать, но не считает и все тут, в прерывании TIM4 смотрю TIM1 CNT а там 2, не пойму где затык ...( 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; } Изменено 19 апреля, 2018 пользователем IgorKossak [codebox] для длинного кода. [code]-для короткого!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 81 19 апреля, 2018 Опубликовано 19 апреля, 2018 · Жалоба Какой конкретно SMT32? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
-=az=- 0 19 апреля, 2018 Опубликовано 19 апреля, 2018 · Жалоба Какой конкретно SMT32? STM32F103VCT6 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 19 апреля, 2018 Опубликовано 19 апреля, 2018 · Жалоба TIM1->ARR? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
-=az=- 0 19 апреля, 2018 Опубликовано 19 апреля, 2018 · Жалоба TIM1->ARR? По default = 0xFFFF Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mcheb 0 19 апреля, 2018 Опубликовано 19 апреля, 2018 · Жалоба На APB1 максимальная частота 36 МГц Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
-=az=- 0 19 апреля, 2018 Опубликовано 19 апреля, 2018 (изменено) · Жалоба На APB1 максимальная частота 36 МГц APB1 peripheral clocks = 36MHz APB1 timer clocks = 72MHz Изменено 19 апреля, 2018 пользователем -AZ- Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 19 апреля, 2018 Опубликовано 19 апреля, 2018 · Жалоба Может, я что-то не понимаю, но TIM4 начинает считать с нуля, считает вниз, то есть 0->0xFFFF, потом сразу Update Event, и он выключается. Ну тогда естественно, что TIM1 успеет дёрнуться пару раз и заглохнет. Логично? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
-=az=- 0 19 апреля, 2018 Опубликовано 19 апреля, 2018 (изменено) · Жалоба Может, я что-то не понимаю, но TIM4 начинает считать с нуля, считает вниз, то есть 0->0xFFFF, потом сразу Update Event, и он выключается. Ну тогда естественно, что TIM1 успеет дёрнуться пару раз и заглохнет. Логично? Не, при счете вниз, он считает от значения регистра ARR т.е. (10000-1) до 0 TIM4 четко через 1 сек. падает в прерывание Изменено 19 апреля, 2018 пользователем -AZ- Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 19 апреля, 2018 Опубликовано 19 апреля, 2018 · Жалоба Может быть, в порядке удара в бубен сделать им при инициализации Update? TIMn->EGR |= TIM_EGR_UG Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
-=az=- 0 19 апреля, 2018 Опубликовано 19 апреля, 2018 · Жалоба Может быть, в порядке удара в бубен сделать им при инициализации Update? TIMn->EGR |= TIM_EGR_UG Попробовал добавил строки, после инициализации PSC и ARR обоих таймеров: TIMn->EGR = TIM_EGR_UG; TIMn->SR = 0; Значение в TIM1->CNT изменилось с 2 на 1, больше ничего ...( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 81 19 апреля, 2018 Опубликовано 19 апреля, 2018 · Жалоба Что-то не вижу выбора бита в 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться