Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 16.12.2013, 16:24  
kvark85
Прописка
 
Регистрация: 31.08.2008
Сообщений: 183
Сказал спасибо: 25
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
kvark85 на пути к лучшему
По умолчанию STM32F051 и ШИМ

Порядочно долго не выходит получить ШИМ. Использую TIM3. Хочу на CH2 этого TIM3 получить ШИМ и вывести его на PB5 (если я правильно разобрался в этой запутанной системе).
Код:
 int main() {
 RCC-›APB1ENR|=RCC_APB1ENR_TIM3EN; //тактирование TIM3 (на нем работет ШИМ)
 RCC-›AHBENR |= RCC_AHBENR_GPIOBEN; //тактирование порта  B (в данном случае необходим для вывода ШИМ)

 GPIOB-›MODER   &= ~GPIO_MODER_MODER5; //сбрасываем биты MODER отвечающие за PB5   
 GPIOB-›MODER   |= GPIO_MODER_MODER5_1; //устанавливаекм биты MODER PB5 (0b10 - AF)
 GPIOB-›OTYPER  &= ~GPIO_OTYPER_OT_5; //сбрасываем биты OTYPER_OT_5 (0: Output push-pull (reset state))
 GPIOB-›OSPEEDR |= GPIO_OSPEEDER_OSPEEDR5; //устанавливаем OSPEEDR PB5=0b11 (максимальная скорость)
 GPIOB-›PUPDR   &= ~GPIO_PUPDR_PUPDR5; //сбрасываем биты PUPDR5 PB5 (push-pull, No pull-up, No pull-down)
 GPIOB-›AFR[0]  |= (uint32_t)1‹‹(4*5); //указываем на PB5 альтернативную функцию 1 (0001: AF1)
 
 TIM3-›PSC = 240 - 1;
 TIM3-›ARR = 0x7FFF;
 TIM3-›CCR1 = 0x3FFF;
 TIM3-›CCMR1 |= TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1; //CCR1=0b110: PWM mode 1
 TIM3-›CCMR1 |= TIM_CCMR1_OC2PE; //Output compare 2 preload enable
 TIM3-›CR1 |= TIM_CR1_ARPE; //auto-reload preload enabl (egister is buffered)
 TIM3-›CCER |= TIM_CCER_CC2E; //Capture/Compare 2 output enable
 TIM3-›CR1 |= TIM_CR1_CEN;  //запускаем таймер
 while(1);
 }
На PB5 - постоянно 0.
Реклама:
__________________
Kvsrk85(Андрей)
kvark85 вне форума  
Непрочитано 16.12.2013, 18:01  
kvark85
Прописка
 
Регистрация: 31.08.2008
Сообщений: 183
Сказал спасибо: 25
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
kvark85 на пути к лучшему
По умолчанию Re: STM32F051 и ШИМ

как чувствовал что ошибка где то поблизости очень простая и связана с невнимательностью: в коде выше строка TIM3-›CCR1 = 0x3FFF; а канал 2, следовательно надо так TIM3-›CCR2 = 0x3FFF . заработало. аж не верится (долго запускал этот шим). Только для меня остается непонятным момент почему частота ШИМ у меня получается в 2 раза меньше расчетной. Что ее делит в 2 раза не пойму.
__________________
Kvsrk85(Андрей)

Последний раз редактировалось kvark85; 16.12.2013 в 18:40.
kvark85 вне форума  
Непрочитано 16.12.2013, 19:04  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: STM32F051 и ШИМ

Сообщение от kvark85 Посмотреть сообщение
и связана с невнимательностью:
Угу , если считать что сие уже обсуждалось https://kazus.ru/forums/showthread.php?t=106689
рекомендую всю ветку читать ...
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 16.12.2013, 19:07  
индюк
Гуру портала
 
Аватар для индюк
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,413
Сказал спасибо: 176
Сказали Спасибо 3,128 раз(а) в 2,017 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: STM32F051 и ШИМ

апапратно нигде не делится частота? помоему так у лпц13 было вроде
индюк на форуме  
Непрочитано 16.12.2013, 19:13  
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: STM32F051 и ШИМ

Сообщение от kvark85 Посмотреть сообщение
как чувствовал что ошибка где то поблизости очень простая и связана с невнимательностью: в коде выше строка TIM3-›CCR1 = 0x3FFF; а канал 2, следовательно надо так TIM3-›CCR2 = 0x3FFF . заработало. аж не верится (долго запускал этот шим). Только для меня остается непонятным момент почему частота ШИМ у меня получается в 2 раза меньше расчетной. Что ее делит в 2 раза не пойму.
Если выбран режим Center-aligned частота будет в два раза ниже расчетной. При Edge-aligned один-в-один. Но в режиме edge-aligned нельзя получить "чистый" уровень "1" при полном заполнении периода. Всегда будут короткие отрицательные просечки длительностью в период клока таймера. В режиме center-aligned все чисто. На времянках обеих мод все наглядно видно.
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 16.12.2013, 19:59  
kvark85
Прописка
 
Регистрация: 31.08.2008
Сообщений: 183
Сказал спасибо: 25
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
kvark85 на пути к лучшему
По умолчанию Re: STM32F051 и ШИМ

Все верно у меня. Никакого предделения частоты - нет, выравнивания по центру - нет. APB - 48 МГц. Генерирую меандр с частотой 37,7кГц. Код с очень простым расчетом ниже:
Код:
 RCC-›APB1ENR|=RCC_APB1ENR_TIM3EN; //тактирование TIM3 (на нем работет ШИМ)
 RCC-›AHBENR |= RCC_AHBENR_GPIOBEN; //тактирование порта  B (в данном случае необходим для вывода ШИМ)

 GPIOB-›MODER   &= ~GPIO_MODER_MODER5; //сбрасываем биты MODER отвечающие за PB5   
 GPIOB-›MODER   |= GPIO_MODER_MODER5_1; //устанавливаекм биты MODER PB5 (0b10 - AF)
 GPIOB-›OTYPER  &= ~GPIO_OTYPER_OT_5; //сбрасываем биты OTYPER_OT_5 (0: Output push-pull (reset state))
 GPIOB-›OSPEEDR &= ~GPIO_OSPEEDER_OSPEEDR5; //сбрасываем OSPEEDR PB5=0b00 (минимальная скорость)
 GPIOB-›PUPDR   &= ~GPIO_PUPDR_PUPDR5; //сбрасываем биты PUPDR5 PB5 (push-pull, No pull-up, No pull-down)
 GPIOB-›AFR[0]  |= (uint32_t)1‹‹(4*5);  //указываем на PB5 альтернативную функцию 1 (0001: AF1)
 
 TIM3-›ARR = 48000000/37700; //период ШИМ (37700 - частота ШИМа)
 TIM3-›CCR2 = TIM3-›ARR/2;
 TIM3-›CCMR1 |= TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1; //CCR1=0b110: PWM mode 1
 TIM3-›CCMR1 |= TIM_CCMR1_OC2PE; //Output compare 2 preload enable
 TIM3-›CR1 |= TIM_CR1_ARPE; //auto-reload preload enabl (egister is buffered)
 TIM3-›CCER |= TIM_CCER_CC2E; //Capture/Compare 2 output enable
 TIM3-›CR1 |= TIM_CR1_CEN; //запускаем таймер
__________________
Kvsrk85(Андрей)

Последний раз редактировалось kvark85; 16.12.2013 в 20:02.
kvark85 вне форума  
Непрочитано 16.12.2013, 21:08  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: STM32F051 и ШИМ

Сообщение от kvark85 Посмотреть сообщение
Только для меня остается непонятным момент почему частота ШИМ у меня получается в 2 раза меньше расчетной.
А сколько получилось? И чем проверяешь?
У меня получилось 6Гц
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 17.12.2013, 00:41  
zöner
Гражданин KAZUS.RU
 
Регистрация: 16.02.2012
Сообщений: 441
Сказал спасибо: 89
Сказали Спасибо 735 раз(а) в 149 сообщении(ях)
zöner на пути к лучшему
По умолчанию Re: STM32F051 и ШИМ

Цитата:
Порядочно долго не выходит получить ШИМ
проще залезть в код библиотечных функций и сравнить, с ними все работает
zöner вне форума  
Непрочитано 17.12.2013, 05:17  
zöner
Гражданин KAZUS.RU
 
Регистрация: 16.02.2012
Сообщений: 441
Сказал спасибо: 89
Сказали Спасибо 735 раз(а) в 149 сообщении(ях)
zöner на пути к лучшему
По умолчанию Re: STM32F051 и ШИМ

ШИМ точно работает, проверено на разных таймерах и режимах
zöner вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Режимы сна Атмега-8 putmannn AVR 123 08.03.2013 15:30
ШИМ в STM32F4 sosedi Микроконтроллеры, АЦП, память и т.д 5 15.08.2012 12:20
Управление Сервой Mg995 Через Аппаратный Шим Vyazikov Микроконтроллеры, АЦП, память и т.д 16 06.04.2012 21:06
Проблема с аппаратным ШИМ в мега169 Archer07 Микроконтроллеры, АЦП, память и т.д 3 09.07.2010 15:40
Proteus не хочет "дружить" с ШИМ PIC16F877. Почему finiki Микроконтроллеры, АЦП, память и т.д 6 18.08.2009 12:32


Часовой пояс GMT +4, время: 22:26.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot