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

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

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

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

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

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


 
Опции темы

Аппаратный учет числа импульсов ШИМ

Непрочитано 23.10.2016, 23:34  
NewWriter
Почётный гражданин KAZUS.RUN
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Аппаратный учет числа импульсов ШИМ

Ууу, ну если так писать, то конечно никакой производительности не хватит. 48-мегагерцевый до уровня 16-мегагерцевой Меги опускаете таким макаром.
Надо учиться писать нормальный, компактный, быстрый и понятный код.

Остановка таймеров в пошаговой отладке задается в регистрах группы DBGMCU, причем, таймеры можно тормознуть прямо в пошаговой отладке, щелкнув бит остановки желаемого таймера.
Хотя в том и прелесть, что таймеры в остановленной отладке работают. Можно прямо на ходу выставлять нужные биты, задавать режимы - и все это без написания кода.
Реклама:

Последний раз редактировалось NewWriter; 23.10.2016 в 23:36.
NewWriter вне форума  
Непрочитано 24.10.2016, 00:07  
индюк
Гуру портала
 
Аватар для индюк
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 11,128
Сказал спасибо: 202
Сказали Спасибо 3,285 раз(а) в 2,151 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: Аппаратный учет числа импульсов ШИМ

Сообщение от backlan Посмотреть сообщение
Для периодов шага
10, 50, 60, 200
выдаёт количество шагов
25, 9, 8, 3.
опять спл)))) нуну))) вот его кпд - 200/3 = 1,5%
__________________
кагмаподэ магмаподэ
индюк вне форума  
Непрочитано 24.10.2016, 13:40  
backlan
Частый гость
 
Аватар для backlan
 
Регистрация: 06.10.2008
Адрес: Ростов-на-Дону
Сообщений: 49
Сказал спасибо: 5
Сказали Спасибо 4 раз(а) в 3 сообщении(ях)
backlan на пути к лучшему
По умолчанию Re: Аппаратный учет числа импульсов ШИМ

SPL здесь чисто для теста. И если выставить LTO + O3, то код теоретически может получиться даже быстрее, чем при ручной записи в регистры, потому что здесь внутри функций регистры читаются в переменные, потом у них нужные биты меняются, и результат пишется обратно. А если писать в регистр вручную, то при каждой записи он сначала будет читаться из памяти, так как обозначен volatile.
backlan вне форума  
Непрочитано 24.10.2016, 14:31  
Someone
Гражданин KAZUS.RUN
 
Регистрация: 16.06.2005
Сообщений: 942
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
Someone на пути к лучшему
По умолчанию Re: Аппаратный учет числа импульсов ШИМ

Понаписали, 4 страницы, когда достаточно одной строчки... Если так уж сильно надо считать импульсы, что выдаёт шим (оно имхо не надо, но хозяин-барин)

Один таймер сконфигурировать как тактируемый внешним сигналом и на его вход подать шим.

Просто и очевидно по вопросу автора.

Последний раз редактировалось Someone; 24.10.2016 в 14:36.
Someone вне форума  
Непрочитано 25.10.2016, 21:39  
backlan
Частый гость
 
Аватар для backlan
 
Регистрация: 06.10.2008
Адрес: Ростов-на-Дону
Сообщений: 49
Сказал спасибо: 5
Сказали Спасибо 4 раз(а) в 3 сообщении(ях)
backlan на пути к лучшему
По умолчанию Re: Аппаратный учет числа импульсов ШИМ

Была идея сделать на событие счета посылку счетчика через dma + bit-band в регистр порта, но такая связка не работает, для побитового доступа нужен процессор. Но есть ещё один вариант, подключить dma на событие счета или обновления и у него задать режим инкремента адреса. Тогда указатель на буфер можно будет использовать в качестве счетчика импульсов. Но здесь ещё одна проблема, dma занимает шину памяти. Кто-нибудь пробовал одновременно запускать 5 каналов или хотя бы 3, процессор от этого не остановится?
backlan вне форума  
Непрочитано 25.10.2016, 22:18  
NewWriter
Почётный гражданин KAZUS.RUN
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Аппаратный учет числа импульсов ШИМ

Сообщение от backlan Посмотреть сообщение
писать в регистр ... так как обозначен volatile.
Так ведь SPL работает через тот же самый CMSIS, а в нем все регистры МК помечены как _IO , и если проследить передефайны, то это самое _IO есть ни что иное как volatile.
Модификатор volatile же указывает компилятору, что при оптимизации не надо пытаться выбрасывать операции с этой переменной. Этот модификатор не определяет способ чтения, но он запрещает пропускать операции с переменной.

Сообщение от backlan Посмотреть сообщение
выставить LTO + O3, то код теоретически может получиться даже быстрее
Ничуть. Простое сравнение:
RCC-›APB1ENR |= RCC_APB1ENR_TIM3EN;
и
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
при одинаковом уровне оптимизации -O3 дают разницу 1 : 16 по размеру и 1 : 13 по времени исполнения - часть инструкций тратится на вызов функции, часть на выполнение функции и возврат из нее.



Сообщение от backlan Посмотреть сообщение
Кто-нибудь пробовал одновременно запускать 5 каналов или хотя бы 3, процессор от этого не остановится?
Запускал почти все каналы во все стороны, даже с FIFO, а на F030F4P6 вообще все каналы. И ничего - работал. По его внутренним правилам, DMA не может занимать шину более чем на половину времени. В крайнем случае, если не хватит - отвалится канал DMA с ошибкой доступа.

Что касается счета импульсов - и я, и Someone уже ж предлагали варианты.
В моем варианте - аппаратно отсчитывается, с ускорением-замедлением и остановкой.
NewWriter вне форума  
Непрочитано 25.10.2016, 22:42  
backlan
Частый гость
 
Аватар для backlan
 
Регистрация: 06.10.2008
Адрес: Ростов-на-Дону
Сообщений: 49
Сказал спасибо: 5
Сказали Спасибо 4 раз(а) в 3 сообщении(ях)
backlan на пути к лучшему
По умолчанию Re: Аппаратный учет числа импульсов ШИМ

А, ну это от мастерства компилятора зависит. Привык, что микрософтовский инлайнит даже то, что не просят, у него код получается такой, что лучше не напишешь.
Я же не спорю, что ваши варианты будут работать. Но если в мк всего 6 таймеров, то их хватит только на три оси с трудом. Попробую ещё пдп, если не взлетит, тогда сделаю каскады таймеров, а какие нельзя в каскад, для тех снаружи выводы соединю. Хочется ещё хоть один таймер на ШИМ шпинделя оставить.

Если пдп отвалится, он свой указатель инкрементирует? Остановится при этом? И вообще, такое бывает?

P.S. А в этом примере LTO включена?

Последний раз редактировалось backlan; 25.10.2016 в 22:45.
backlan вне форума  
Непрочитано 25.10.2016, 23:56  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Аппаратный учет числа импульсов ШИМ

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

Сообщение от backlan Посмотреть сообщение
А мои тапочки уже уперлись в производительность .
контроллер ШД с режимом микрошага, 64 на шаг.
мотор 200 шагов/оборот
винт 1.25 мм на оборот
И чтобы ехать на скорости 100 мм/сек, надо выдавать 100 * 64 * 200/1.25 = 1024000 шагов/сек, и это только по одной оси. Хм, такую частоту даже кабель не вынесет, придется уменьшить до 8 микрошагов, но всё равно МК не потянет.
Вот даже и не знаю, смеяться или плакать...
На эту тираду возникло несколько наводящих вопросов:
1. Какова частота STEP с Вашего "велосипеда"?
2. Какова частота ШИМ драйвера приводов ШД?
3. Сколько шагов пропустит драйвер за один период ШИМ?

По теме пока достаточно.

Ну и пожалуй самый главный вопрос: Пацаны, вы по какому принципу себе такие "говорящие" ники выбираете?
индюка ещё как-то можно понять, хотя такие совпадения тоже не случайны.
Кто подсказывает или так, чисто по наитию?

Сообщение от backlan Посмотреть сообщение
А, ну это от мастерства компилятора зависит.
О!
Нормалёк...
omercury вне форума  
Непрочитано 26.10.2016, 00:28  
индюк
Гуру портала
 
Аватар для индюк
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 11,128
Сказал спасибо: 202
Сказали Спасибо 3,285 раз(а) в 2,151 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: Аппаратный учет числа импульсов ШИМ

Сообщение от omercury Посмотреть сообщение
и пожалуй самый главный вопрос: Пацаны, вы по какому принципу себе такие "говорящие" ники выбираете?
индюка ещё как-то можно понять, хотя такие совпадения тоже не случайны.
Кто подсказывает или так, чисто по наитию?
не путайте причину и следствие. мне ник в школе еще дали. от фамилии.
__________________
кагмаподэ магмаподэ
индюк вне форума  
Непрочитано 26.10.2016, 00:54  
omercury
Почётный гражданин KAZUS.RUN
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,487
Сказал спасибо: 30
Сказали Спасибо 3,070 раз(а) в 2,011 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: Аппаратный учет числа импульсов ШИМ

Сообщение от индюк Посмотреть сообщение
мне ник в школе еще дали. от фамилии.
А я думал студенты.
Хотел даже похвалить за наблюдательность.

P.S.
Школьные не в счёт, там как правило дальше фамилии/имени фантазия не идёт.
omercury вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
stm32 как шим контроллер Reystlin Микроконтроллеры, АЦП, память и т.д 35 22.03.2016 11:34
Режимы сна Атмега-8 putmannn AVR 123 08.03.2013 15:30
Управление Сервой Mg995 Через Аппаратный Шим Vyazikov Микроконтроллеры, АЦП, память и т.д 16 06.04.2012 21:06
Проблема с аппаратным ШИМ в мега169 Archer07 Микроконтроллеры, АЦП, память и т.д 3 09.07.2010 15:40
Заменить ШИМ на генератор импульсов ? Zemlyanov Микроконтроллеры, АЦП, память и т.д 1 15.05.2007 21:31


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.