Ekka 0 27 июля, 2016 Опубликовано 27 июля, 2016 (изменено) · Жалоба Привет всем) Такой вопрос. Возможно ли БЕЗ прерываний сделать следующее: у меня есть пин, на котором периодически проходят импульсы, По подъему нужно, чтобы включался таймер. Но прерывания нельзя использовать. Читала про синхронизацию таймеров и источник их тактирования. Но не могу вдуплить, как именно не счетчик дергать у таймера по импульсам канала, а включить его просто. Может, кто посоветует, куда копать хотя бы. МК - STM32f105 Изменено 20 декабря, 2022 пользователем haker_fox Уточнил название темы, добавил теги, переместил в нужный раздел. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 27 июля, 2016 Опубликовано 27 июля, 2016 · Жалоба А по-яснее? Включить или запустить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ekka 0 27 июля, 2016 Опубликовано 27 июля, 2016 · Жалоба А по-яснее? Включить или запустить? запустить с обновленным счетчиком Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 27 июля, 2016 Опубликовано 27 июля, 2016 · Жалоба Глава 16.3.11 (стр.442 из CD00171190.pdf) не подходит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ekka 0 27 июля, 2016 Опубликовано 27 июля, 2016 (изменено) · Жалоба Глава 16.3.11 (стр.442 из CD00171190.pdf) не подходит? спасибо))) как раз документацию искала)) сейчас засяду Изменено 27 июля, 2016 пользователем Ekka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 27 июля, 2016 Опубликовано 27 июля, 2016 · Жалоба "Читала про синхронизацию таймеров и источник их тактирования." - а это тогда откуда? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ekka 0 27 июля, 2016 Опубликовано 27 июля, 2016 · Жалоба "Читала про синхронизацию таймеров и источник их тактирования." - а это тогда откуда? Просто из статей. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 27 июля, 2016 Опубликовано 27 июля, 2016 · Жалоба Просто из статей. Ё-моё, как будто первый раз замужем (: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ekka 0 28 июля, 2016 Опубликовано 28 июля, 2016 · Жалоба Ё-моё, как будто первый раз замужем (: О_О" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 5 28 июля, 2016 Опубликовано 28 июля, 2016 · Жалоба Слыхал что на заводах из-за разделения труда встречаются такие проблемы. Разработчик схемы ничего не знает о микроконтроллере, кроме того что у него есть GPIO и пины питания. В итоге разработчиками ПО под контроллер приходится делать ШИМ на GPIO, перекидывать аналоговые сигналы на входы АЦП и прочая несуразица. Похоже тут как раз такой случай. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ekka 0 28 июля, 2016 Опубликовано 28 июля, 2016 · Жалоба Слыхал что на заводах из-за разделения труда встречаются такие проблемы. Разработчик схемы ничего не знает о микроконтроллере, кроме того что у него есть GPIO и пины питания. В итоге разработчиками ПО под контроллер приходится делать ШИМ на GPIO, перекидывать аналоговые сигналы на входы АЦП и прочая несуразица. Похоже тут как раз такой случай. Хм... у меня просто есть симисторный регулятор. У него есть пин управления и пин - детектора фазы. Организовать регулирование мощности с прерываниями и проч. - было уже сделано, работало прекрасно. Но есть новая задача. Сделать то же, но без прерываний. Вот и думаю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 5 28 июля, 2016 Опубликовано 28 июля, 2016 · Жалоба Сделать то же, но без прерываний. Вот и думаю.Зачем??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ekka 0 28 июля, 2016 Опубликовано 28 июля, 2016 (изменено) · Жалоба Ребята, не могу таймер 2 канал 2 настроить на шим... у него вообще есть такая возможность? может он суперособенный? так настаиваю ШИМ void TIM2_Cfg() { TIM_TimeBaseInitTypeDef tim_struct; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); tim_struct.TIM_Period = POWER; tim_struct.TIM_Prescaler = 100; tim_struct.TIM_ClockDivision = 0; tim_struct.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, &tim_struct); TIM_ClearITPendingBit(TIM2,TIM_IT_Update); TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); } void TIM2_CH2_PWM_Cfg() { TIM_ARRPreloadConfig(TIM2,ENABLE); TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable); TIM_OCInitTypeDef pwm; TIM_OCStructInit(&pwm); pwm.TIM_Pulse =500; pwm.TIM_OCMode = TIM_OCMode_PWM1; pwm.TIM_OutputState = TIM_OutputState_Enable; pwm.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC2Init(TIM2, &pwm); TIM2->CCR2=TIM2->ARR/2; } //сама нога PB3 void GPIO_Cfg() { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //откл JTDI GPIO_InitTypeDef c; c.GPIO_Mode = GPIO_Mode_AF_PP; c.GPIO_Pin = CONTROL_Pin; c.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(PORT_CONTROL_Pin, &c); } Изменено 29 июля, 2016 пользователем Ekka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ekka 0 29 июля, 2016 Опубликовано 29 июля, 2016 (изменено) · Жалоба ... Изменено 29 июля, 2016 пользователем Ekka Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amiller 2 29 июля, 2016 Опубликовано 29 июля, 2016 · Жалоба Простой совет: Забудьте про всякие HAL, Cube, CMSIS и тому подобное. Зачем Вам разбираться с багами индусов? Если Вы пишите код для какой то периферии, то нужно знать, как эта периферия работает. И перед написанием кода нужно по крайней мере один раз прочитать раздел раздел 15 "General-purpose timers (TIM2 to TIM5)" из документа "RM0008". Там ответы на все Ваши вопросы. Кроме Вас в Вашем коде ошибки вряд ли кто найдёт. Навскидку варианты: Где то в другом месте программы повторно инициализируются используемые ноги процессора. Вы просто забыли в программе осуществить вызов представленных функций для настройки таймера. Что-то забыли в настройке, но здесь пусть смотрят знатоки по применению этих библиотек. Там меньше десятка регистров, в которые при настройке нужно записать нужные значения. Разберитесь один раз и у Вас будет собственный код настройки таймеров, в котором Вам будет всё понятно и который можно будет портировать под разные проекты. Под STM вообще без проблем. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться