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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> STM32f4 PWM проблема с первым импульсом
ArtDenis
сообщение Jul 9 2015, 09:40
Сообщение #16


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

Группа: Участник
Сообщений: 142
Регистрация: 10-11-12
Пользователь №: 74 318



adnega, как это есть рабочий код? Вот его последнее сообщение (жирным выделено мной):
Цитата(EmbedElektrik @ Jul 8 2015, 15:50) *
Спасибо, идея инверсии понятна. У меня заработало. Но непонятки с моей изначальной инициализацией остались sad.gif С управлением регистрами напрямую все равно этот импульс пролазит.



--------------------
http://ufa-darts.ru/ - собираем дартс-лигу в Уфе
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jul 9 2015, 09:45
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



я так понял инвертировали ШИМ и все работает, а в старом варианте даже с прямым управлением регистрами пролазит импульс. Я так понимаю эти сообщения. Природа импульса как я понимаю в том что на время инициализации ШИМ как раз выдает 1, потом сбрасывается обновлением для принятия новых настроек, и работает штатно.
Go to the top of the page
 
+Quote Post
adnega
сообщение Jul 9 2015, 10:03
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Golikov A. @ Jul 9 2015, 12:45) *
я так понял инвертировали ШИМ и все работает, а в старом варианте даже с прямым управлением регистрами пролазит импульс. Я так понимаю эти сообщения.

Я тоже так понял.

Цитата(Golikov A. @ Jul 9 2015, 12:45) *
Природа импульса как я понимаю в том что на время инициализации ШИМ как раз выдает 1, потом сбрасывается обновлением для принятия новых настроек, и работает штатно.

PWM1 устанавливается в единичку в момент update.
Если инициализация приводит к update, то на выходе будет единичка.
Меня больше волнует вопрос: кто сбрасывает вывод в ноль после формирования пачки импульсов? У меня получается стабильная единичка на выходе в конце.
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Jul 9 2015, 12:34
Сообщение #19


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



а как вы формируете _пачку_, в каком регистре тот счётчик ?
Go to the top of the page
 
+Quote Post
adnega
сообщение Jul 9 2015, 12:45
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Огурцов @ Jul 9 2015, 15:34) *
а как вы формируете _пачку_, в каком регистре тот счётчик ?

Я формирую пачку программно, счетчик в переменной и обрабатывается в прерывании таймера (update).
Можно сделать каскадное соединение таймеров, но для двух импульсов с приличной задержкой между ними - по-моему, перебор.
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Jul 9 2015, 13:23
Сообщение #21


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



я вам о том и говорю: формируете сами - чего ждёте от железа ?
если же второй таймер подключить, то там 146% начнёт работать как надо
у меня на это только один вопрос остался - обязательно ли первый таймер должен иметь вход брейк или можно как-то на внутренней коммутации или эвентах это замутить ?
Go to the top of the page
 
+Quote Post
adnega
сообщение Jul 9 2015, 16:33
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Огурцов @ Jul 9 2015, 16:23) *
я вам о том и говорю: формируете сами - чего ждёте от железа ?

Я бы не торопился разделять железо и софт.
Нужно грамотно управлять и тем, и тем.
Вариантов решения много: самый простой аппаратный - вывод через SPI байта 01000010 с длительностью бита 10мкс.
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Jul 9 2015, 16:36
Сообщение #23


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



уверены, что заработает ? мега, например, страдала тем, что выводила дополнительную паузу между байтами, типа девятого бита
Go to the top of the page
 
+Quote Post
adnega
сообщение Jul 9 2015, 16:41
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Огурцов @ Jul 9 2015, 19:36) *
уверены, что заработает ? мега, например, страдала тем, что выводила дополнительную паузу между байтами, типа девятого бита

Между байтами путь будет любая пауза. Битовый интервал формируется делителем и очень стабильно.
Go to the top of the page
 
+Quote Post
Огурцов
сообщение Jul 9 2015, 18:29
Сообщение #25


Гуру
******

Группа: Участник
Сообщений: 3 928
Регистрация: 28-03-07
Из: РФ
Пользователь №: 26 588



меня любая пауза не устраивает, мне нужно заданное количество импульсов заданной частоты и заданной длительности
оне ведь даже регистр специальный для этого сделали
вот бы он ещё работал согласно своему названию

Сообщение отредактировал Огурцов - Jul 9 2015, 18:30
Go to the top of the page
 
+Quote Post
EmbedElektrik
сообщение Jul 10 2015, 06:49
Сообщение #26


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

Группа: Свой
Сообщений: 121
Регистрация: 30-07-08
Из: Тверь, Россия
Пользователь №: 39 321



Вобщем господа я забил на эту проблему - тупо перевожу на время инициализации вывод в GPIO. Вобщем STM прекрасно выдает последовательность. На картинке серия из 6ти импульсов со скважностью 25 50 и 75% (попарно). Внизу импульсы гашения со второго канала таймера.
Если кто разберется как победить инициализацию - буду признателен.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Jul 10 2015, 07:16
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



я так понимаю что именно как вы и победили.
самый первый вывод ШИМ из-за буферных регистров всегда кривоватый ИМХО...
Go to the top of the page
 
+Quote Post
ArtDenis
сообщение Jul 10 2015, 09:25
Сообщение #28


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

Группа: Участник
Сообщений: 142
Регистрация: 10-11-12
Пользователь №: 74 318



Цитата(EmbedElektrik @ Jul 10 2015, 11:49) *
Вобщем господа я забил на эту проблему - тупо перевожу на время инициализации вывод в GPIO

Так вам тут же написали - сразу после инициализации ШИМ выдаёт 1, поэтому импульс и вылазит до момента присвоения TIM2->CNT=15;


Можно вместо перевода в GPIO и TIM2->CNT=15 просто при инициализации задать длительность ШИМа в 0, а потом когда, он понадобится, выставить нужное значение.


--------------------
http://ufa-darts.ru/ - собираем дартс-лигу в Уфе
Go to the top of the page
 
+Quote Post
EmbedElektrik
сообщение Jul 10 2015, 10:14
Сообщение #29


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

Группа: Свой
Сообщений: 121
Регистрация: 30-07-08
Из: Тверь, Россия
Пользователь №: 39 321



Цитата(ArtDenis @ Jul 10 2015, 12:25) *
Так вам тут же написали - сразу после инициализации ШИМ выдаёт 1, поэтому импульс и вылазит до момента присвоения TIM2->CNT=15;


Можно вместо перевода в GPIO и TIM2->CNT=15 просто при инициализации задать длительность ШИМа в 0, а потом когда, он понадобится, выставить нужное значение.

я уже сейчас не помню, потому что чего я только с таймером не делал, но при CNT=0 ширина первого импульса была больше чем должна быть. Вобщем, возможно позже вернусь к этому вопросу, а пока надо деньги зарабатывать sm.gif
Go to the top of the page
 
+Quote Post

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

 


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


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