Например TDA7294

Форум РадиоКот • Просмотр темы - stm32f103c8 Ровные края ШИМ
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Вт май 11, 2021 16:51:40

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 20 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: stm32f103c8 Ровные края ШИМ
СообщениеДобавлено: Сб фев 20, 2021 16:50:27 
Грызет канифоль

Карма: 3
Рейтинг сообщений: 10
Зарегистрирован: Пт мар 20, 2009 12:25:47
Сообщений: 267
Откуда: Ivanovo
Рейтинг сообщения: 0
Никак не могу получить ровные края генерации ШИМ по двум каналам.
Инициализация таймера:
Код:
   RCC->APB1RSTR |= RCC_APB1RSTR_TIM3RST;
   __NOP();__NOP();__NOP();
   RCC->APB1RSTR &= ~RCC_APB1RSTR_TIM3RST;

   GPIOA->ODR &= ~( GPIO_ODR_ODR6 | GPIO_ODR_ODR7 );
   GPIOA->CRL &= ~( GPIO_CRL_CNF6 | GPIO_CRL_CNF7 | GPIO_CRL_MODE6 | GPIO_CRL_MODE7 );
   GPIOA->CRL |= ( GPIO_CRL_MODE6 | GPIO_CRL_CNF6_1 | GPIO_CRL_MODE7 | GPIO_CRL_CNF7_1 );

   uint32_t arr = 200;
   uint32_t ccr = arr/2;
   uint32_t syf = 56000000;

   TIM3->CR2 |= TIM_CR2_MMS_1; // TRGO trigger

   TIM3->PSC = syf/arr/freq - 1;
   TIM3->ARR = arr - 1;
   TIM3->CCR1 = ccr;
   TIM3->CCR2 = ccr;
   TIM3->CCMR1 |= ( TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1 ); // TIM3_CH2 PWM mode 1
   TIM3->CCMR1 |= ( TIM_CCMR1_OC1M ); // TIM3_CH1 PWM mode 2
   TIM3->DIER |= TIM_DIER_UIE;
   TIM3->EGR = TIM_EGR_UG;
   TIM3->CR1 |= TIM_CR1_ARPE;
   TIM3->CCER |= ( TIM_CCER_CC1E | TIM_CCER_CC2E );
   TIM3->CR1 |= TIM_CR1_CEN;

Прерывание:
Код:
void TIM3_IRQHandler(void)
{
   static uint8_t count = 0;
   if (TIM3->SR & TIM_SR_UIF)
   {
      if(++count > 4)
      {
         count = 0;
         TIM3->CCER &= ~( TIM_CCER_CC1E | TIM_CCER_CC2E );
         TIM3->CR1 &= ~TIM_CR1_CEN;
      }
      TIM3->SR &= ~TIM_SR_UIF;
   }
}


На старте ситуация такая:
Вложение:
start.png [8.16 KiB]
Скачиваний: 255


В конце вот такая:
Вложение:
stop.png [9.09 KiB]
Скачиваний: 247


Как сделать ровные края? Что бы первый импульс был 12.5 мкс, и в конце не было этого импульса.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103c8 Ровные края ШИМ
СообщениеДобавлено: Сб фев 20, 2021 17:33:07 
Грызет канифоль

Карма: 4
Рейтинг сообщений: 47
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Сообщений: 269
Откуда: 69.Ржев
Рейтинг сообщения: 0
На сколько я понимаю - таймер здесь не при делах
Ты же сам дрыгаешь CCER

Добавлено after 4 minutes 29 seconds:
И может TIM1 удобней, у него " счетчик импульсов" есть

Да и BDTR у него есть


Последний раз редактировалось a797945 Сб фев 20, 2021 18:21:51, всего редактировалось 1 раз.

Вернуться наверх
 

JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/cwc

Не в сети
 Заголовок сообщения: Re: stm32f103c8 Ровные края ШИМ
СообщениеДобавлено: Сб фев 20, 2021 17:37:54 
Вымогатель припоя

Карма: -17
Рейтинг сообщений: 11
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 625
Рейтинг сообщения: -1
freq предлагаете угадывать?
Чтоб "в конце не было этого импульса" нужно использовать теневые compare-регистры.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: stm32f103c8 Ровные края ШИМ
СообщениеДобавлено: Сб фев 20, 2021 19:24:14 
Грызет канифоль

Карма: 3
Рейтинг сообщений: 10
Зарегистрирован: Пт мар 20, 2009 12:25:47
Сообщений: 267
Откуда: Ivanovo
Рейтинг сообщения: 0
uint32_t freq = 40000;
ок?
первый таймер уже не использовать, плата в устройстВАХ уже готова и выводы сделаны для РА6 и РА7
раньше (ну и сейчас) был ШИМ на РА6 и он был mode 2, так что косяков с краями не было, РА7 был выводом общего назначения, теперь его решено использовать для вывода инвертированного сигнала


Вернуться наверх
 
Вебинар «Экосистема MEAN WELL. Решения для любых задач электропитания» (20.05.2021)

Приглашаем 20 мая на вебинар, посвященный линейке поставок компании MEAN WELL и ее подходу к производству источников питания — как экосистемы продукции и услуг, которая позволяет подобрать оптимальный источник питания для любых задач электропитания. Рассмотрим весь спектр выпускаемой продукции MEAN WELL в области AC/DC-, DC/DC- и DC/AC-преобразователей с подробным разбором интересных и уникальных новинок, их применении и многое другое.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: stm32f103c8 Ровные края ШИМ
СообщениеДобавлено: Сб фев 20, 2021 21:26:25 
Грызет канифоль

Карма: 4
Рейтинг сообщений: 47
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Сообщений: 269
Откуда: 69.Ржев
Рейтинг сообщения: 0
если он будет ВСЕГДА инверсным, то и проблемы не будет.
вы же - то подключаете ноги к каналам таймера, то отключаете от каналов.
мне кажется дело в этом.

у вашего камня map`ом подходящие линии TIM1 на эти ноги не коммутируются?
я наизусть МК не знаю :dont_know:


Вернуться наверх
 
Интеллектуальные ключи верхнего плеча семейства PROFET™+2 12V от Infineon

Компания Infineon представила новое семейство защищенных силовых ключей PROFET™+2 12V. Изделия объединяют в себе функции диагностики и различные защиты. Ключи PROFET™+2 12V имеют одно из самых низких в отрасли сопротивлений в открытом состоянии RDS(ON) (от 2,6 мОм) и выпускаются в миниатюрном корпусе TSDSO-14 с шагом выводов 0,65 мм. Благодаря функции ReverseON все семейство соответствует строгим требованиям по защите от обратной полярности питания, впервые реализованной в одном чипе.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: stm32f103c8 Ровные края ШИМ
СообщениеДобавлено: Сб фев 20, 2021 22:08:59 
Вымогатель припоя

Карма: -17
Рейтинг сообщений: 11
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 625
Рейтинг сообщения: 0
если он будет ВСЕГДА инверсным, то и проблемы не будет.
вы же - то подключаете ноги к каналам таймера, то отключаете от каналов.
А где он такое делает?? :shock:
Имхо - в ISR ТС просто выключает генерацию после 4-х периодов. Что видно и на картинках.

PS: Хотя подробно биты конфигурации я не проверял, сужу по беглому взгляду, может ошибаюсь...

Добавлено after 3 minutes 39 seconds:
сообщение не несёт смысловой нагрузки

Если вы не поняли этой нагрузки, то так и скажите. Вместо минусования желающих помочь.
Вам тут никто ничего не должен.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103c8 Ровные края ШИМ
СообщениеДобавлено: Сб фев 20, 2021 23:36:41 
Грызет канифоль

Карма: 4
Рейтинг сообщений: 47
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Сообщений: 269
Откуда: 69.Ржев
Рейтинг сообщения: 0
отработав 4 периода, что заставило на второй линии "1" (как положено) вдруг кувыркнуться в "0",
из того что вижу только :
TIM3->CCER &= ~( TIM_CCER_CC1E | TIM_CCER_CC2E );
могу заподозрить.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103c8 Ровные края ШИМ
СообщениеДобавлено: Вс фев 21, 2021 01:08:36 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 1
Рейтинг сообщений: 24
Зарегистрирован: Ср ноя 20, 2013 11:29:26
Сообщений: 178
Откуда: Манчестер
Рейтинг сообщения: 0
TIM3->CCER &= ~( TIM_CCER_CC1E | TIM_CCER_CC2E );
могу заподозрить.

Да, именно это и выключает, а сам импульс формируется из задержки входа в прерывание.

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

_________________
При решение наиболее сложных задач, большинство, как правило, ошибается...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103c8 Ровные края ШИМ
СообщениеДобавлено: Вс фев 21, 2021 09:58:43 
Грызет канифоль

Карма: 3
Рейтинг сообщений: 10
Зарегистрирован: Пт мар 20, 2009 12:25:47
Сообщений: 267
Откуда: Ivanovo
Рейтинг сообщения: 0
очевидно что оба в ноль
либо вы что-то недопонимаете, либо что-то путаете, но биты CC1E и CC2E регистра CCER подключают выходные контакты, мне нужен этот ШИМ снаружи, а не внутри
если подключать пины этими битами раньше, то и уровень на пине будет высокий (для PWM mode 1) СРАЗУ! а не при старте таймера
работать постоянно таймер не должен, в этом нет смысла (как и в сообщении про теневые регистры без указания их имен и вообще без полезной информации)
таймер должен запуститься, отработать 4 (или сколько я потом захочу) раз и выключиться до следующего запуска. при этом на ногах РА6 и РА7 должны получиться ровные импульсы по 12.5 мкс (ШИМ 40 кГц со скважностью 50%) инвертированные друг к другу, в остальное время там должен быть НОЛЬ!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103c8 Ровные края ШИМ
СообщениеДобавлено: Вс фев 21, 2021 11:16:03 
Грызет канифоль

Карма: 4
Рейтинг сообщений: 47
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Сообщений: 269
Откуда: 69.Ржев
Рейтинг сообщения: 0
э-ка, как Вас гордыня то ... ;)
и это - "очевидно что оба в ноль" - ни нам ни таймеру совсем не очевидно.

вы или вопрос переформулируйте или сами убирайте с ноги канал таймера, там где он лишний.
извините, а я в баньку пойду :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103c8 Ровные края ШИМ
СообщениеДобавлено: Вс фев 21, 2021 14:11:27 
Грызет канифоль

Карма: 3
Рейтинг сообщений: 10
Зарегистрирован: Пт мар 20, 2009 12:25:47
Сообщений: 267
Откуда: Ivanovo
Рейтинг сообщения: 0
Я в баньку в 18 пойду
в прерывании видно что я ногу убираю с таймера, но "всплеск" всё равно есть
а когда ставлю - есть лишнее время в начале. и это легко доказать вставив задержку между установкой бита CCxE и запуском таймера
и никакой гордыни нет, изначально задал эти вопросы
видимо это невозможно без вмешательства ещё одного таймера


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103c8 Ровные края ШИМ
СообщениеДобавлено: Вс фев 21, 2021 15:08:48 
Модератор
Аватар пользователя

Карма: 76
Рейтинг сообщений: 891
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4222
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
spongebob писал(а):
в прерывании видно что я ногу убираю с таймера, но "всплеск" всё равно есть
Вы не учитываете время от конца периода (события для прерывания) до "выключения ноги".

Я в STM'ах не силён, но мне кажется, что там в таймерах есть возможность его вырубить, дав отработать период до конца. Типа, с автоотключением счёта.
Хотя, я могу ошибаться. Лениво RM'ы искать и читать :roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103c8 Ровные края ШИМ
СообщениеДобавлено: Вс фев 21, 2021 15:28:13 
Грызет канифоль

Карма: 3
Рейтинг сообщений: 10
Зарегистрирован: Пт мар 20, 2009 12:25:47
Сообщений: 267
Откуда: Ivanovo
Рейтинг сообщения: 0
Сделал как хотел без использования доп таймера

П.С. для людей будущего которых занесут сюда поисковые сервисы - пишите в ЛС, поделюсь мудростью


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103c8 Ровные края ШИМ
СообщениеДобавлено: Вс фев 21, 2021 15:31:43 
Модератор
Аватар пользователя

Карма: 76
Рейтинг сообщений: 891
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4222
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Почему бы тут не сказать ? Зачем заставлять людей регистрироваться и писать Вам в личку ? :dont_know:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103c8 Ровные края ШИМ
СообщениеДобавлено: Пн фев 22, 2021 09:55:15 
Грызет канифоль

Карма: 4
Рейтинг сообщений: 47
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Сообщений: 269
Откуда: 69.Ржев
Рейтинг сообщения: 0
самому не доводилось решать эту задачку, ну как вариант:
- переставить прерывание на регистр (чтоб попадать во второй полупериод),
- в обработчике : поднимать OPM (CR1) и маскировать уже не нужный канал например этим OCхM (CCMRх) (100/101),
- буферизация ARR уже есть, добавить для ccr OCхPE (CCMRх),
- до старта записывать чуть меньшие aar и ccr, а стартовав вписать полноразмерные.
или дополнить счет лишним периодом, но первый период спрятать, подключая каналы в работу по очереди в не активную фазу, хоть этим OCхM (CCMRх) .
вроде должно получиться.

изначально не прозвучало, что причина "неровности" понятна, поэтому я покумекал о причине за решение не думал, приемлемое ему решение я полагал автор придумает сам. как оно позже и получилось

"люди будущего" наверное будут программировать другие контроллеры и не прикасаясь к клаве :))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103c8 Ровные края ШИМ
СообщениеДобавлено: Пн фев 22, 2021 16:34:50 
Модератор
Аватар пользователя

Карма: 76
Рейтинг сообщений: 891
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4222
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Да... Вот такие люди бывают... Если у кого-то есть решение, то с ними должны поделиться. А если оно есть у них, то фигушки вам всем ...
Как-то они называются, такие люди... Слово забыл... Как же его там .... А, эгоисты, вот ... :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103c8 Ровные края ШИМ
СообщениеДобавлено: Пн фев 22, 2021 19:21:51 
Грызет канифоль

Карма: 3
Рейтинг сообщений: 10
Зарегистрирован: Пт мар 20, 2009 12:25:47
Сообщений: 267
Откуда: Ivanovo
Рейтинг сообщения: 0
Ну да. Я просил помощи.
Мне тут прилетело очень много "поддержки".
Я сделал сам, с чего вдруг я должен этой информацией делиться?
Кому понадобится - спросите, я обязательно напишу. И напишу не просто слова, а КОД.
Либо имена регистров и их биты.
Но если я не знаю - я не лезу.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103c8 Ровные края ШИМ
СообщениеДобавлено: Пн фев 22, 2021 23:12:07 
Держит паяльник хвостом

Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 955
Рейтинг сообщения: 0
Когда я игрался с WS2815, обнаружил, что нужно либо добавлять в конце буфера лишний нулевой байт, чтобы передать его по DMA, либо же, если работать честно, использовать грязный хак (т.к. по-человечески надо было бы заводить в прерывании по DMA transfer complete прерывание на CC1, но на больших скоростях оно тупо не успевает отработать).

_________________
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103c8 Ровные края ШИМ
СообщениеДобавлено: Вт фев 23, 2021 18:11:22 
Грызет канифоль

Карма: 4
Рейтинг сообщений: 47
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Сообщений: 269
Откуда: 69.Ржев
Рейтинг сообщения: 0
дел.
на оффтоп поперся - убрал


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f103c8 Ровные края ШИМ
СообщениеДобавлено: Пн апр 19, 2021 19:18:32 
Друг Кота
Аватар пользователя

Карма: 23
Рейтинг сообщений: 87
Зарегистрирован: Вс янв 24, 2010 19:19:52
Сообщений: 4319
Откуда: Главный Улей России (Moscow)
Рейтинг сообщения: 0
В некоторых таймерах STMки есть так называемый Repetition Counter. Тот вообще позволяет
таймеру прощелкать заданное количество полных циклов и остановиться. И это аппаратно.

_________________
ааааааааааааа
Изображение I am DX168B and this is my favourite forum on internet!


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

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


Кто сейчас на форуме

Сейчас этот форум просматривают: otrazhenie и гости: 17


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

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


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y