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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Без прерываний
Ekka
сообщение Jul 27 2016, 11:26
Сообщение #1


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

Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250



Привет всем) Такой вопрос. Возможно ли БЕЗ прерываний сделать следующее:

у меня есть пин, на котором периодически проходят импульсы,
По подъему нужно, чтобы включался таймер.

Но прерывания нельзя использовать. Читала про синхронизацию таймеров и источник их тактирования.
Но не могу вдуплить, как именно не счетчик дергать у таймера по импульсам канала, а включить его просто.

Может, кто посоветует, куда копать хотя бы.

МК - STM32f105

Сообщение отредактировал Ekka - Jul 27 2016, 11:27
Go to the top of the page
 
+Quote Post
Obam
сообщение Jul 27 2016, 12:42
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



А по-яснее? Включить или запустить?


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
Ekka
сообщение Jul 27 2016, 12:46
Сообщение #3


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

Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250



Цитата(Obam @ Jul 27 2016, 12:42) *
А по-яснее? Включить или запустить?



запустить с обновленным счетчиком
Go to the top of the page
 
+Quote Post
Obam
сообщение Jul 27 2016, 13:13
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



Глава 16.3.11 (стр.442 из CD00171190.pdf) не подходит?


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
Ekka
сообщение Jul 27 2016, 13:22
Сообщение #5


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

Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250



Цитата(Obam @ Jul 27 2016, 13:13) *
Глава 16.3.11 (стр.442 из CD00171190.pdf) не подходит?



спасибо))) как раз документацию искала)) сейчас засяду

Сообщение отредактировал Ekka - Jul 27 2016, 13:22
Go to the top of the page
 
+Quote Post
Obam
сообщение Jul 27 2016, 13:58
Сообщение #6


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



"Читала про синхронизацию таймеров и источник их тактирования." - а это тогда откуда?


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
Ekka
сообщение Jul 27 2016, 14:19
Сообщение #7


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

Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250



Цитата(Obam @ Jul 27 2016, 13:58) *
"Читала про синхронизацию таймеров и источник их тактирования." - а это тогда откуда?


Просто из статей.
Go to the top of the page
 
+Quote Post
Obam
сообщение Jul 27 2016, 14:27
Сообщение #8


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



Цитата(Ekka @ Jul 27 2016, 18:19) *
Просто из статей.


Ё-моё, как будто первый раз замужем (:


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
Ekka
сообщение Jul 28 2016, 06:45
Сообщение #9


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

Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250



Цитата(Obam @ Jul 27 2016, 14:27) *
Ё-моё, как будто первый раз замужем (:


О_О"
Go to the top of the page
 
+Quote Post
uriy
сообщение Jul 28 2016, 07:31
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Слыхал что на заводах из-за разделения труда встречаются такие проблемы.
Разработчик схемы ничего не знает о микроконтроллере, кроме того что у него есть GPIO и пины питания.
В итоге разработчиками ПО под контроллер приходится делать ШИМ на GPIO, перекидывать аналоговые сигналы на входы АЦП и прочая несуразица.
Похоже тут как раз такой случай.
Go to the top of the page
 
+Quote Post
Ekka
сообщение Jul 28 2016, 08:42
Сообщение #11


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

Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250



Цитата(uriy @ Jul 28 2016, 07:31) *
Слыхал что на заводах из-за разделения труда встречаются такие проблемы.
Разработчик схемы ничего не знает о микроконтроллере, кроме того что у него есть GPIO и пины питания.
В итоге разработчиками ПО под контроллер приходится делать ШИМ на GPIO, перекидывать аналоговые сигналы на входы АЦП и прочая несуразица.
Похоже тут как раз такой случай.


Хм... у меня просто есть симисторный регулятор.
У него есть пин управления и пин - детектора фазы.
Организовать регулирование мощности с прерываниями и проч. - было уже сделано,
работало прекрасно. Но есть новая задача.
Сделать то же, но без прерываний. Вот и думаю.
Go to the top of the page
 
+Quote Post
uriy
сообщение Jul 28 2016, 09:03
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Цитата
Сделать то же, но без прерываний. Вот и думаю.
Зачем???
Go to the top of the page
 
+Quote Post
Ekka
сообщение Jul 28 2016, 14:30
Сообщение #13


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

Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250



Ребята, не могу таймер 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);
}


Сообщение отредактировал Ekka - Jul 29 2016, 08:40
Go to the top of the page
 
+Quote Post
Ekka
сообщение Jul 29 2016, 07:14
Сообщение #14


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

Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250



...

Сообщение отредактировал Ekka - Jul 29 2016, 07:14
Go to the top of the page
 
+Quote Post
amiller
сообщение Jul 29 2016, 09:56
Сообщение #15


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

Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612



Простой совет:
Забудьте про всякие HAL, Cube, CMSIS и тому подобное. Зачем Вам разбираться с багами индусов?
Если Вы пишите код для какой то периферии, то нужно знать, как эта периферия работает.
И перед написанием кода нужно по крайней мере один раз прочитать раздел раздел 15 "General-purpose timers (TIM2 to TIM5)" из документа "RM0008".
Там ответы на все Ваши вопросы. Кроме Вас в Вашем коде ошибки вряд ли кто найдёт. Навскидку варианты:
Где то в другом месте программы повторно инициализируются используемые ноги процессора.
Вы просто забыли в программе осуществить вызов представленных функций для настройки таймера.
Что-то забыли в настройке, но здесь пусть смотрят знатоки по применению этих библиотек.
Там меньше десятка регистров, в которые при настройке нужно записать нужные значения.
Разберитесь один раз и у Вас будет собственный код настройки таймеров, в котором Вам будет всё понятно и который можно будет портировать под разные проекты. Под STM вообще без проблем.
Go to the top of the page
 
+Quote Post

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

 


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


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