|
STM PWM Input, Как отцифровать на STM несколько PWM сигналов |
|
|
|
Feb 6 2015, 17:54
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Всем привет! Ковыряюсь с новым для себя семейством от STM, потому все чуднО и Чудно пока что  . Дано: 6 входных сигналов (лучше 10), период сигнала порядка 20 мСек, длительность импульса от 1 до 2 мСек. Начало сигналов близкое, но в общем случае не одновременное, длительность в интервале 1-2 мСек любая, но именно в этом интервале. Надо: Получить значение длительности каждого сигнала при этом не убив все ресурсы процессора. делаю это на stm32f3discovery. Собственно у меня есть несколько рецептов, может у кого есть лучше, посоветуйте. 1. Вариант Input PWM - вообще не вариант, так как на 1 сигнал ухлопывается целый таймер. 2. Хотел запустить таймер бежать, настроить каналы в режиме capture, на оба фронта, и по прерыванию capture сохранять начало и конец фронта. Но что-то я читаю описание, и вроде как получается что режим срабатывания по обоим фронтам идет через slave controller и как я понимаю я не могу иметь 4 независимых канала или нет? Можно конечно перенастраивать то на восходящий, а в прерывании перенастраивать на падающий, но как-то это не красиво ИМХО 3. Подать сигналы на ножки с прерывание по фронту, и запустить бежать таймер, в прерывании сохранять значение. Из плюсов что можно всего 1 таймер, Из минусов что есть нечеткость определения фронта, пока обрабатываем одни ноги, другие могут сработать и пойдут по не правильному времени. Еще я правильно понимаю что прерываний от ног всего 16, и если взяли прерывание от А0.8, то ни от B0.8 ни от С0.8 его уже не получить? 4. Тупой полинг, долбить уровень на ногах и запустить таймер, но что-то это как-то мрачно, весь ресурс уйдет на это... Посоветуйте, может я какие варианты забыл, может какое-то жесткое ДМА можно придумать в целом я себе вижу что точность в 1000 уровней на интервал будет выше крыши.
|
|
|
|
|
 |
Ответов
|
Feb 6 2015, 20:13
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Ну да приемник, только их 2 (4 и 6 каналов), и они старого образца, у них нет режима вывода на одну ногу. И даже если бы был, задача решить для самого тупого варианта, который будет работать всегда. Так что надо цифровать 6-10 сигналов... Хоть отдельный проц на это ставь, или ПЛИС. Цитата В вашем случае сигналы начинаются одновременно, поэтому так просто не выйдет. Правильнее говорить почти одновременно, потому что иначе бы я закапчил по восходящему общее начало, и потом все спады, а тут надо отдельно каждый сигнал. Цитата Я имею в виду, что вас интересует длительность от начала до конца, а не наоборот ну в целом одна величина 1-2 мСек, а другая 18-19 мСек. Так что они различимы даже если не следить за фронтами. Цитата Я за второй вариант, перестроить в прерывании захвата фронт/спад - пара команд. Спасибо, опираясь на ваш опыт с STM, если поддерживаете решение, то значит я ничего не упустил  . Будем перенастраивать... А прерывания по ножкам действительно все так? то есть занял 8 прерывание портом А, и Б уже не подключить? Цитата Для разгрузки ЦП я бы сделал аппаратно, например на CPLD, а ЦП будет только собирать данные. (это только мое мнение) Спасибо, это основное решение на будущее, только CPLD не хватает, маленькие они, легче уже FPGA закатать, и кучу остального на нее сбросить, может даже проц в нее вогнать. Вторая итерация если будет, то именно такая. Пока для тестов мучаем проц. Может быть их станет 2 один будут рубить эту задачу, а другой дело делать
|
|
|
|
|
Feb 6 2015, 20:36
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(Golikov A. @ Feb 7 2015, 01:13)  А прерывания по ножкам действительно все так? то есть занял 8 прерывание портом А, и Б уже не подключить? Если завели внешнее прерывание на 8 ножку порта A, то завести другое на 8 ножку порта B не получится. Можно: A0, A1, A2, ... A15. Нельзя: A0, B0, C0, A1, B1, C1... Но в применении внешних прерываний для замера длительности сигналов главный недостаток не этот, а потеря точности при одновременном поступлении сигналов.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
Сообщений в этой теме
Golikov A. STM PWM Input Feb 6 2015, 17:54 1113 Цитата(Golikov A. @ Feb 6 2015, 20:54) мо... Feb 6 2015, 18:00 Golikov A. чем это лучше моего варианта под номером 2? Feb 6 2015, 18:02 1113 Цитата(Golikov A. @ Feb 6 2015, 21:02) че... Feb 6 2015, 18:03 Iptash Для разгрузки ЦП я бы сделал аппаратно, например н... Feb 6 2015, 19:25 AHTOXA Цитата(Golikov A. @ Feb 6 2015, 22:54) Да... Feb 6 2015, 19:30 smk Первое что приходит на ум это подключить все сигна... Feb 6 2015, 20:22 Golikov A. на один порт? по ИЛИ что ли? Тогда первый поднявши... Feb 6 2015, 20:36 smk Цитата(Golikov A. @ Feb 6 2015, 22:36) на... Feb 6 2015, 20:50 Iptash А измерять нужно каждый импульс, или можно пропуск... Feb 6 2015, 20:39 Golikov A. ЦитатаНо в применении внешних прерываний для замер... Feb 6 2015, 20:43 AHTOXA Цитата(Golikov A. @ Feb 7 2015, 01:43) 1 ... Feb 6 2015, 20:51 Golikov A. Это когда прерывания как у LPC, там весь порт кажд... Feb 6 2015, 20:52 smk Цитата(Golikov A. @ Feb 6 2015, 22:52) Эт... Feb 6 2015, 21:01 smk Если у Вас 10 сигналов, а портов 5 то заведите 5 с... Feb 6 2015, 20:54 Golikov A. ЦитатаНу или узнайте способ кодирования ваших сист... Feb 6 2015, 20:56 AHTOXA Цитата(Golikov A. @ Feb 7 2015, 01:56) н... Feb 6 2015, 21:03 Golikov A. PPM приходит по воздуху, а дальше приемник раскоди... Feb 6 2015, 21:32 jcxz Ещё вариант:
Завести все сигналы на один GPIO-порт... Feb 7 2015, 12:08  smk Цитата(jcxz @ Feb 7 2015, 14:08) Ещё вари... Feb 7 2015, 12:50 Golikov A. это был такой вариант. Но есть беда с разбором пол... Feb 7 2015, 12:38 jcxz Цитата(Golikov A. @ Feb 7 2015, 18:38) да... Feb 7 2015, 17:11 SasaVitebsk stm позволяет оцифровывать аппаратно pwm сигнал. О... Feb 7 2015, 18:29 Golikov A. 1000 отсчетов на 6-10 каналах будет не меньше 6000... Feb 7 2015, 23:37 jcxz Цитата(Golikov A. @ Feb 8 2015, 05:37) 10... Feb 8 2015, 05:46 smk Интересно, а если проработать вопрос на предмет ан... Feb 8 2015, 06:00 Golikov A. Оцифровка ШИМа через АЦП - нормальный способ, надо... Feb 8 2015, 08:07 jcxz Цитата(Golikov A. @ Feb 8 2015, 14:07) ко... Feb 8 2015, 08:19 Golikov A. Ага, спасибо.
Собственно говоря у 6 каналов будет... Feb 9 2015, 05:09 jcxz Цитата(Golikov A. @ Feb 9 2015, 11:09) По... Feb 9 2015, 07:51 Golikov A. ну так я у вас и посмотрел, и отразил как бы суть ... Feb 9 2015, 07:55
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|