Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ШИМ на таймере в LPC21xx, LPC23xx
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
zhek
PWM уже занят, остались только таймеры, а нужно получить еще ШИМ сигнал с переменной скважностью. Когда делал проект на LPC2148, обошелся toggl-ами пинов. Сейчас взял LPC2366, опять та же проблема. Можно сбросить/установить пин, используя регистр сравнения таймера. А чем его обратно возвращать в момент сброса счетчика? Получается, что ШИМ таймером не сделать.
Я что-то не понял в даташите или может есть обходные пути?
Ivan A-R
http://www.k9spud.com/traxmod/devel.html версию 0.5.х посмотри. Там я так понял сделано тоже через таймер. Файл audio.c
zhek
Цитата(Ivan A-R @ Sep 30 2008, 17:09) *
Там я так понял сделано тоже через таймер. Файл audio.c

Спасибо за ссылочку. Но там применен LPC2103. Почитал даташиты. В LPC210x есть режимы PWM в таймерах и про это явно написано. А в последующих камнях этой возможности нет. Видимо, в этом и ответ на мой вопрос. Хочешь много ШИМов - применяй другие камни.
Но все-таки паскудство. 100 ног - и всего один PWM.
etoja
LPC2103 - более новый процессор по сравнению с LPC2138/2148/2104/2105/2106.
В нём многое улучшено, например UARTы, скорость дёргания пинов, ШИМ.
Ivan A-R
Цитата(zhek @ Sep 30 2008, 15:24) *
Спасибо за ссылочку. Но там применен LPC2103. Почитал даташиты. В LPC210x есть режимы PWM в таймерах и про это явно написано.

Можно проверить, сбрасывается ли пин при сбросе счётчика.
А можно вызывать прерывание по сбросу счётчика и пин сбрасывать в ручную. А поднимать его прописав EMR регистр (10 - Set the corresponding External Match bit/output to 1 (MATn.m pin is HIGH if pinned out).). Или в твоём кристалле и этого нет?

Вот как-то так.
MrYuran
Цитата(zhek @ Sep 30 2008, 13:30) *
Можно сбросить/установить пин, используя регистр сравнения таймера. А чем его обратно возвращать в момент сброса счетчика? Получается, что ШИМ таймером не сделать.

чё-то я не понимаю. Если по регистру сравнения можно сбросить/установить пин, то в чём собственно проблема? Сначала настраиваете таймер на установку ноги по совпадению, а в прерывании по совпадению настраиваете на сброс по следующему совпадению. Да и наверняка есть различные режимы для выхода таймера (установка, сброс, переключение, установка-сброс, сброс-установка и т.д.)
Ivan A-R
Цитата(MrYuran @ Sep 30 2008, 19:55) *
чё-то я не понимаю. Если по регистру сравнения можно сбросить/установить пин, то в чём собственно проблема?

Каждому Math Register соответствует своя нога =((( То бишь автоматом можно либо сбрасывать, либо устанавливать либо менять состояние (toggle)

P.S. Я тоже буду рад если это не так )
zhek
Главная проблема-то в том, что частота ШИМ требуется 72 кГц. Чтобы устанавливать и сбрасывать пин, нужно дергаться в прерывания 2 раза за период, т. е. каждые 7 мкс. Для АРМа это напряжно, да еще и считать нужно много, иначе зачем он. А при маленьких значениях коэффициента заполнения вообще не успеть перенастроить.
А вот насчет того, что LPC2103 более новые - я этого не знал. Надо поглядеть в их сторону.
Спасибо всем ответившим.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.