Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: LPC1768 - несколько меандров с одного таймера
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
BCluster
Добрый день. У LPC17xx есть возожность делать тогл определенных ножек по прерыванию на аппаратном уровне. Вот собственно вопрос - могу ли я делать тогл одной ножки с частотой f, а другой с f/32 например? Пробовал реализовать это программно - очень сильное отставание по фазе. А эти сигналы должны быть синхронны. Сейчас соединил MAT выход одного таймера с CAP входом другого просто физически проводком sm.gif, настроенного как счетчик и делю на 32 частоту. Но этот вариант какой то подозрительный.
bodja74
делаете прерывание с частотой ф
ставите счетчик в прерывание
и каждое 32е прерывание дергаете не только первой но и второй ногой
BCluster
Я писал уже что такая реализация не подходит. Я не дергаю в прерывании ногой. Процессор делает это на аппаратном уровне. У меня и так мало процвремени, чтоб тратить его еще на это безобразие. А если первый меандр дергать аппаратно, а второй программно - никакой синхронизации нет.
vmp
А почему бы не использовать Motor Control PWM? Три независимых канала, синхронный запуск.
MrYuran
Не знаю точно, как реализованы таймеры в кортексах, но вот на MSP430 есть непрерывный режим таймеров.
Это такой режим, когда таймер непрерывно щёлкает по кругу, а защёлки срабатывают при совпадении.
Тогда в прерывании от защёлки достаточно "зарядить" её на следующий интервал (включая настройку переключения ног) и спокойно заниматься своими делами.
Ноги будут дёргаться "железно", а скорость обработки прерывания будет уже некритична.
Тогда от одного таймера можно получить столько разных асинхронных интервалов и частот, сколько позволяют его защёлки (или регистры сравнения)
Ну и, конечно, есть некий минимальный предел интервала, обусловленный скоростью обработки прерываний и соответственно, "перезаряда" регистров сравнения
BCluster
MrYuran - так можно сделать, но этот вариант все равно будет жрать проц время, причем много, ибо таймер прерывает с частотой в 5мгц. Может я чего-то не допонял, если так буду раз если объясните. sm.gif
А насчет PWM - там вроде частота фиксированная на все каналы и можно менять скважность? Хотя могу и ошибаться.
MrYuran
Цитата(BCluster @ Dec 22 2010, 12:22) *
MrYuran - так можно сделать, но этот вариант все равно будет жрать проц время, причем много, ибо таймер прерывает с частотой в 5мгц. Может я чего-то не допонял, если так буду раз если объясните. sm.gif

Ну, если вам нужны мегагерцы - тут уж ничего не поделать, придётся жертвовать по таймеру на канал. Либо воспользоваться внешним со-контроллером
BCluster
Цитата(MrYuran @ Dec 22 2010, 13:33) *
Ну, если вам нужны мегагерцы - тут уж ничего не поделать, придётся жертвовать по таймеру на канал. Либо воспользоваться внешним со-контроллером


Да меня это не смущает, меня смущает внешнее соединение одного таймера с другим. Думаю нормально ли это.
vmp
Цитата(BCluster @ Dec 22 2010, 12:22) *
А насчет PWM - там вроде частота фиксированная на все каналы и можно менять скважность? Хотя могу и ошибаться.

Не просто PWM, а Motor Control PWM - это совсем другой модуль.
Там 3 независимых таймера, у каждого свой счетчик и регистр лимита (до скольких считать). А вот регистр с битами запуска - общий, так что стартовать они будут синхронно.
Так что читайте Chapter 25 User Manual.
BCluster
Окей понял. Сейчас поглядим.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.