![]() |
![]() |
#11 | |
Member
Регистрация: 07.03.2013
Сообщений: 75
Вес репутации: 0 ![]() |
![]() Цитата:
Подобным образом можно определять значение шима, практически не нагружая проц. Если пойти дальше, то к таймеру, можно прикрутить 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. |
|
![]() |
![]() |
Здесь присутствуют: 3 (пользователей: 0 , гостей: 3) | |
|
|