Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > Устройства на ARM процессорах

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.01.2015, 18:08   #11
HiddenPilot
Member
 
Регистрация: 07.03.2013
Сообщений: 75
Вес репутации: 0
HiddenPilot is an unknown quantity at this point
По умолчанию Re: Maple Mini

Цитата:
Сообщение от Sirocco Посмотреть сообщение
Хочу сделать тахометр с дисплеем (на мото), и при превышении оборотов должен идти сигнал на реле, которая будет размыкать искру, так сказать отсечка.
Так понимаю на Maple Mini оно по шустрее будет работать, чем на atmega328p?
Конечно пошустрее. Мало того, для этих целей можно задействовать один из продвинутых таймеров. Таймер привязанный к нужной ноге в момент импульса будет записывать в регистр текущее значение таймера. Далее, в прерывании(или в цикле) можем сравнивать с предыдущим значением таймера, и вычислять период. С помощью делителя можем заставить тикать таймер практически с любой частотой. К примеру загружаем в пределитель значение 72, получаем получаем 1.000.000 отсчетов в сек. Записываем 36000 получаем 2000 отсчетов за 1 сек.

Подобным образом можно определять значение шима, практически не нагружая проц.

Если пойти дальше, то к таймеру, можно прикрутить DMA. Тогда модуль ДМА сам(без участия процессора), по событию будет инкриментированно складывать значения таймера прямо в память(как в массив, т.е. каждое значение в следующую ячейку массива). Таким образом мы еще больше высвобождаем ресурсы процессора.

Так же ДМА можно запустить по циклу размером к примеру 16. Тогда в массиве у вас всегда будет лежать последние 16 значений периодов тактов. Тогда простым усреднением всех значений массива, мы можем получать усредненное значение оборотов(периода м/у тактами).

подобным образом можно считывать инкриментный энкодер или датчик холла. Не нагружая процессор.

Вот пример на вскидку практически под ваши потребности
http://robocraft.ru/blog/ARM/739.html
Единственное, данный пример использует SPL бибилиотеку. А она мне не нравится(много ошибок, и генерить много байтов в прошике). Нужно переписать инициализацию на CMSIS cинтаксис. По сути прямая инициализация через регистры.
Вообще, с STM32 потихоньку начинаешь отвыкать от праграммирвоания в режиме простого ногодрыга, на максимальное использование всех встроенных модулей микроконтроллера. Таймеры у STM32 простоуникум, можно запрограммировать таймер на режим полумостового PUSH-PULL c заданным Dead-Time чтобы исключить сквозного пробоя ключей.

Cамая моя любимая реализация максимального задействования всех прелестей ARM, это Индикация сегментнтного дисплея с использованием только таймеров и ДМА.
http://kazus.ru/forums/showpost.php?...95&postcount=8

Но высший пилотаж это подключение HD44780 с использованием 2х каскадированных таймеров и одного канала ДМА!
Процессор занят только тем что заполняет массив информацией которая должна попасть на экран. Все остальное делает железо, не нагружая сам процессор.
http://kazus.ru/forums/showthread.ph...545#post713545
в них кстати используется CMSIS cинтаксис при инициализации.

Тут небольшое обсуждение
http://www.microchip.su/showthread.php?t=16822

Последний раз редактировалось HiddenPilot; 19.01.2015 в 19:11.
HiddenPilot вне форума   Ответить с цитированием
 


Здесь присутствуют: 2 (пользователей: 0 , гостей: 2)
 

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

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

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


Текущее время: 19:12. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика