Например TDA7294

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





Текущее время: Чт мар 28, 2024 11:35:57

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


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



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

Карма: 3
Рейтинг сообщений: 10
Зарегистрирован: Пт мар 20, 2009 12:25:47
Сообщений: 289
Откуда: 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]
Скачиваний: 444


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


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


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

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

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

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


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

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

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


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

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

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

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


Вернуться наверх
 
Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель.

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

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

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


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

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

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

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

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

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


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

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


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

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

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

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

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


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

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


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

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

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


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

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


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

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

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


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

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

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


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

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


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

Карма: 4
Рейтинг сообщений: 80
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Сообщений: 445
Откуда: 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 
Модератор
Аватар пользователя

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


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

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


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

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

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


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

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


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

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

_________________
I am DX168B and this is my favourite forum on internet!


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

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


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

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


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

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


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