Easyelectronics.ru

Электроника для всех
Текущее время: 01 мар 2021, 07:00

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 24 ] 
Автор Сообщение
 Заголовок сообщения: TIM2 PWM не включается
СообщениеДобавлено: 04 окт 2020, 09:31 
Заглядывает иногда

Зарегистрирован: 14 июн 2019, 10:29
Сообщения: 57
Понимаю, что тема не подходящая, но очень интересно узнать.
Конфигурирую таймеры под ШИМ.
Четвертый таймер сконфигурировал и он работает замечательно. Делаю тоже самое, но со вторым таймером и ноль внимания просто. Во время отладки видно, что таймер считает и флаги появляются. Таймер 2 не предназначен для работы как шим?
Код прилагаю, изменил только номер таймера. Буду благодарен за любую подсказку!

Код:
void PWM_TIM2 (){
   RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;
   TIM2->PSC = 420;
   TIM2->ARR = 99;
   TIM2->CCR1 = 49;
   TIM2->CCR2 = 49;
   TIM2->CCR3 = 49;
   TIM2->CCR4 = 49;
   TIM2->CCMR1 |= TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1PE;
   TIM2->CCMR1 |= TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2PE;
   TIM2->CCMR2 |= TIM_CCMR2_OC3M_1 | TIM_CCMR2_OC3M_2 | TIM_CCMR2_OC3PE;
   TIM2->CCMR2 |= TIM_CCMR2_OC4M_1 | TIM_CCMR2_OC4M_2 | TIM_CCMR2_OC4PE;    
   TIM2->CCER |= TIM_CCER_CC1E | TIM_CCER_CC2E | TIM_CCER_CC3E | TIM_CCER_CC4E;
   TIM2->EGR |= TIM_EGR_UG;
   TIM2->SR = 0;
   TIM2->CR1 |= TIM_CR1_CEN | TIM_CR1_ARPE;
}


Последний раз редактировалось Финский 05 окт 2020, 12:10, всего редактировалось 1 раз.
Изменено название темы


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Почему так?
СообщениеДобавлено: 04 окт 2020, 10:19 
Заглядывает иногда

Зарегистрирован: 10 сен 2020, 21:37
Сообщения: 148
Всё там предназначено (мануал посмотреть кто мешает?). Номер таймера изменил - а выходы изменить то надо ведь тоже? Посмотреть в даташите, на какие выходы работает TIM2.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Почему так?
СообщениеДобавлено: 04 окт 2020, 10:57 
Заглядывает иногда

Зарегистрирован: 14 июн 2019, 10:29
Сообщения: 57
Пельмень Мясной писал(а):
Всё там предназначено (мануал посмотреть кто мешает?). Номер таймера изменил - а выходы изменить то надо ведь тоже? Посмотреть в даташите, на какие выходы работает TIM2.

Вы имеете ввиду выходы порта А как альтернативные? Их я конфигурировал в первую очередь, но и... Ничего не проиходит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Почему так?
СообщениеДобавлено: 04 окт 2020, 12:02 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 7290
))
BDTR


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Почему так?
СообщениеДобавлено: 04 окт 2020, 12:33 
Заглядывает иногда

Зарегистрирован: 14 июн 2019, 10:29
Сообщения: 57
u37 писал(а):
))
BDTR

Огромное спасибо!
Благодаря этой подсказке я снова открыл техническую документацию и с помощью поиска нашел нужную информацию.
Разработчики явно те ещё тролли, что не указали нужный регистр в карте.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Почему так?
СообщениеДобавлено: 04 окт 2020, 12:51 
Старожил

Зарегистрирован: 23 янв 2016, 15:37
Сообщения: 1420
NonameMazaFaka писал(а):
Разработчики явно те ещё тролли, что не указали нужный регистр в карте.

У TIM2 нет BDTR, зачем его указывать...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Почему так?
СообщениеДобавлено: 04 окт 2020, 13:21 
Заглядывает иногда

Зарегистрирован: 10 сен 2020, 21:37
Сообщения: 148
Опять u37 пальцем в небо.
Покажите мне этот BDTR в TIM2, при том, что в мануале таймеры от TIM2 до TIM5 описаны одной главой.
BDTR - это Break and Dead-Time Register, у TIM2 нет комплиментарных выходов, а значит и регистр такой не нужен.

Топикстартеру же нужно исчо раз проверить назначение выходов (режим выхода, номер AF), а так же рассказать, как он смотрит там сигнал то?


Последний раз редактировалось Пельмень Мясной 04 окт 2020, 13:22, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Почему так?
СообщениеДобавлено: 04 окт 2020, 13:22 
Заглядывает иногда

Зарегистрирован: 14 июн 2019, 10:29
Сообщения: 57
Reflector писал(а):
NonameMazaFaka писал(а):
Разработчики явно те ещё тролли, что не указали нужный регистр в карте.

У TIM2 нет BDTR, зачем его указывать...

А вот оказывается есть и в CMSIS прописан, а в документации его нет!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Почему так?
СообщениеДобавлено: 04 окт 2020, 13:24 
Заглядывает иногда

Зарегистрирован: 10 сен 2020, 21:37
Сообщения: 148
И что, что прописан? CMSIS структура написана одна для всех таймеров, без разделения. Место для регистра есть, но функционала не заложено в этот таймер. Вы, как и u37, смотрите в книгу а видите фигу.

RCC->AHB2ENR |= RCC_AHB1ENR_GPIOAEN; написано??


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Почему так?
СообщениеДобавлено: 04 окт 2020, 13:27 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5896
Код:
void pwm_led_init(void)

{
    RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
     RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;
   
      GPIOA->MODER &=~GPIO_MODER_MODER0| GPIO_MODER_MODER1 |GPIO_MODER_MODER2;
     GPIOA->MODER |=GPIO_MODER_MODER0_1 |GPIO_MODER_MODER1_1 |GPIO_MODER_MODER2_1;
   
    GPIOA->AFR[0] |= (2<<4*0)|(2<<4*1)|(2<<4*2);
   
     TIM2->PSC = 480-1;
    TIM2->ARR = 256-1;
      TIM2 ->CCR1 = 10; /* (3) */
     TIM2 ->CCR2 = 60; /* (3) */
     TIM2 ->CCR3 = 15; /* (3) */
   
   
       TIM2->CCMR1 |= (
                       TIM_CCMR1_OC2M_2 |TIM_CCMR1_OC2M_1 |
                       TIM_CCMR1_OC2PE |
                       TIM_CCMR1_OC2FE |
                       TIM_CCMR1_OC1M_2 |TIM_CCMR1_OC1M_1 |
                               TIM_CCMR1_OC1PE |
                               TIM_CCMR1_OC1FE );
                                                          
                              
      TIM2->CCMR2 |= (
                       TIM_CCMR2_OC3M_2 |TIM_CCMR2_OC3M_1 |
                               TIM_CCMR2_OC3PE |
                               TIM_CCMR2_OC3FE );
   
                           
                              
                              
                              
      TIM2->CCER |= TIM_CCER_CC2E |TIM_CCER_CC1E |TIM_CCER_CC3E;
   
      
      TIM2 ->CR1 |= TIM_CR1_CMS_0 | TIM_CR1_CEN ; /* (7) */
   
   
   

}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Почему так?
СообщениеДобавлено: 04 окт 2020, 13:31 
Заглядывает иногда

Зарегистрирован: 10 сен 2020, 21:37
Сообщения: 148
GPIOA->AFR[0] |= (2<<4*0)|(2<<4*1)|(2<<4*2); - ну и что это?
вот так:
GPIOA->AFR[0] |= (1 << (0*4)) | (1 << (1*4)) | (1 << (2*4)) | (1 << (3*4)); /* Потому что AF1*/

Вот это лишнее (хотя на погоду не влияет):
GPIOA->MODER &=~GPIO_MODER_MODER0| GPIO_MODER_MODER1 |GPIO_MODER_MODER2;
потому что после сброса они и так там все нули в указанных разрядах. Если бы вы писали для STM32L, тогда другое дело.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Почему так?
СообщениеДобавлено: 04 окт 2020, 13:33 
Старожил

Зарегистрирован: 10 окт 2014, 00:48
Сообщения: 7290
Что за безграмотную хрень изволит писать имбицил "Пельмень Мясной"?
И вообще, из какого дерьма он к нам приплыл?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Почему так?
СообщениеДобавлено: 04 окт 2020, 13:34 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5896
Пельмень, Во первых это рабочий код.
Во вторых -двойка номер AF , последняя цифра номер пина.
У вас же авр отсебятина...

И выдыхай, там есть лишнее но не то что ты ляпнул...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Почему так?
СообщениеДобавлено: 04 окт 2020, 13:39 
Заглядывает иногда

Зарегистрирован: 10 сен 2020, 21:37
Сообщения: 148
u37 пусть вначале ответит за бред про BTDR в TIM2. И вообще, пусть научится разговаривать культурно.
А dosikus_2 пусть считать научится :))) Вам, уважаемый, табличку показать из датишита или сами увидите?

dosikus_2, выдыхайте иногда, перед тем, как вы выразились, ляпнуть. А то сами наляпали :) Будите мне еще рассказывать, где тут номер пина, а где номер AF.


Вложения:
Безымянный.png
Безымянный.png [ 12.18 Кб | Просмотров: 519 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Почему так?
СообщениеДобавлено: 04 окт 2020, 13:44 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5896
А теперь табличку на F072 узри.
И какой камень у ТС ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Почему так?
СообщениеДобавлено: 04 окт 2020, 13:46 
Заглядывает иногда

Зарегистрирован: 10 сен 2020, 21:37
Сообщения: 148
dosikus_2, с этого и надо было начинать - какой микроконтроллер у топикстартера? По прошлой теме там был F407VG на плате дискавери. От этого и пляшем, пока не доказано иное.

Лишнее TIM_CCMR1_OC2FE. Ко всем прочим бедам ТС-а.
И еще лишнее TIM2->CCMR1 |= потому что таймер конфигится заново, зачем считывать предыдущее состояние то?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Почему так?
СообщениеДобавлено: 04 окт 2020, 14:17 
Заглядывает иногда

Зарегистрирован: 14 июн 2019, 10:29
Сообщения: 57
Пельмень Мясной писал(а):
И что, что прописан? CMSIS структура написана одна для всех таймеров, без разделения. Место для регистра есть, но функционала не заложено в этот таймер. Вы, как и u37, смотрите в книгу а видите фигу.

RCC->AHB2ENR |= RCC_AHB1ENR_GPIOAEN; написано??

Да! Я не знаю почему, но стоило добавить одну строчку кода и таймер заработал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Почему так?
СообщениеДобавлено: 04 окт 2020, 14:26 
Старожил
Аватара пользователя

Зарегистрирован: 18 июн 2011, 16:29
Сообщения: 2140
Откуда: Докучаевск-Волноваха
так какой проц всё-таки?
и топик желательно назвать в соответствии с обсуждением

_________________
Хранитель форума


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Почему так?
СообщениеДобавлено: 04 окт 2020, 14:27 
Заглядывает иногда

Зарегистрирован: 14 июн 2019, 10:29
Сообщения: 57
Всем спасибо за ответы!

Пельмень Мясной
Благодаря вашему коду на обнаружил, что я не установил биты в CMS. Убрал строчку BDTR и установил бит - все работает.
u37
И вам огромное спасибо за подсказку.
Не знаю почему, но если убрать BDTR и CMS, таймер не хочет работать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Почему так?
СообщениеДобавлено: 04 окт 2020, 14:27 
Заглядывает иногда

Зарегистрирован: 14 июн 2019, 10:29
Сообщения: 57
Финский писал(а):
так какой проц всё-таки?
и топик желательно назвать в соответствии с обсуждением

407VG. Плата DISC1


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Почему так?
СообщениеДобавлено: 04 окт 2020, 15:02 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5896
NonameMazaFaka писал(а):
Всем спасибо за ответы!

Пельмень Мясной
Благодаря вашему коду на обнаружил, что я не установил биты в CMS. Убрал строчку BDTR и установил бит - все работает.


Жесть. Вы пельменя ни с кем не спутали?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Почему так?
СообщениеДобавлено: 04 окт 2020, 15:26 
Заглядывает иногда

Зарегистрирован: 10 сен 2020, 21:37
Сообщения: 148
dosikus_2, а вы вообще сами то поняли, чего понаписали там? :) :) :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Почему так?
СообщениеДобавлено: 04 окт 2020, 15:40 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5896
В отличии от тебя, все понимаю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Почему так?
СообщениеДобавлено: 04 окт 2020, 15:56 
Заглядывает иногда

Зарегистрирован: 10 сен 2020, 21:37
Сообщения: 148
Прямо-таки всё-всё? Вау, ну и расскажите нам всем, что вы поняли :))) Особенно интересно, поняли ли вы, что F072 отличается от F407 хотябы тем, что у них разные циферки. И у разных микроконтроллеров поразному назначены AF. А так же, сообралили ли вы, что вы задали Center-aligned mode 1? :))) И понимаете ли, чем он отличается, а чем схож с обычным режимом?
Рассказывайте, dosikus_2, не стесняйтесь. А то больно уж лихо въехали на пару с u37, да уж тухловато съезжаете :)) Оба, между прочим.
И u37 пусть тоже не стесняясь расскажет, где он нашел BDTR в TIM2, в котором отродясь не было комплиментарных выходов. И пусть не забудет рассказать назначение BDTR, что там зачем, а то кроме бита Main Out Enable наверно и не слышал ничего.
Мда, видимо, ответа ни от dosikus_2, ни тем более от u37 так и не будет :)) Лихо влетели, зато тихо съехали :) Ну ладно там dosikus_2, хоть плохо воспитан, но, как видно, он хоть что-то там соображает. Ну а u37 то куда с таким воспитанием и с огромными незнаниями, нивзуб ногой?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB