Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
07.06.2011, 07:13
|
#1
|
Гражданин KAZUS.RU
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
|
ШИМ через таймер в LPC
Доброго времени суток! Такая проблемка: проц LPC2368 хочу шим по T2 регистр совпадения MR2.3. Конфиг такой:
PINSEL0|=_BV(19); PINSEL0|=_BV(1 ![Горд собой](images/smilies/icon_dovl.gif) ; // MAT2.3
T2PR = 0x00000000; // предделитель
T2TCR|=_BV(1); // сброс таймера
T2TCR&=~_BV(1);
T2MCR|=_BV(7); // сброс MR2
T2MR3=10;
T2MR2= 40; //Set the cycle time
T2EMR&= ~_BV(11);
T2EMR|= _BV(10);
T2TCR|=_BV(0); // разрешение таймера
Все время вывод либо в нуле либо в единице в зависимости от конфига регистра T2EMR, есть варианты сброса в 0 и установки в 1 вывода при совпадении счетного регистра и регистра T2MR3. А при конфиге T2EMR для инверитрования состояния вывода - получаю меандр, что не удовлетворяет моей задачи, мне нужна изменяемая ширина импульса. Подскажите, господа знатоки, что я делаю не так?
__________________
То, что нас не убивает - делает нас сильнее
|
|
|
|
07.06.2011, 11:35
|
#2
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: ШИМ через таймер в LPC
Простите за странный вопрос - почему бы не использовать специально предназначенный для этой цели модуль PWM ? ![Улыбка](images/smilies/icon_smile.gif)
Это не AVR, нет в его таймерах режима PWM. Если уж появилась такая необходимость, то сбрасывать выходы компаратора придётся вручную...
Собственно UM10211 страница 599 про управление компараторами. Стр. 562 - модуль PWM...
|
|
|
|
07.06.2011, 16:04
|
#3
|
Гражданин KAZUS.RU
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
|
Re: ШИМ через таймер в LPC
В том то и дело, что сам модуль ШИМ занят, а мне надо регулировать яркость подсветки: не приспосабливать для этого шим, вот я и спрашиваю. Непонятно, почему работает при инверитировании вывода, а при установке его в ноль или единицу не работает.
Так Вы предлагаете вручную из прерывания сбрасывать или как?
__________________
То, что нас не убивает - делает нас сильнее
|
|
|
|
07.06.2011, 16:48
|
#4
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: ШИМ через таймер в LPC
Сообщение от serb-radio
|
вручную из прерывания сбрасывать
|
По переполнению таймера сбрасывать(или устанавливать - как настроите). Иначе не выходит...
|
|
|
|
09.06.2011, 09:39
|
#5
|
Гражданин KAZUS.RU
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
|
Re: ШИМ через таймер в LPC
Чето непонятно: а почему при инверитвровании вывода работает, а при переключении в 1 или 0 не работает?
__________________
То, что нас не убивает - делает нас сильнее
|
|
|
|
14.06.2011, 10:44
|
#6
|
Гражданин KAZUS.RU
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
|
Re: ШИМ через таймер в LPC
Люди, подскажите, почему при инвертировании ноги при совпадении с счетным регистром все работает, а установка в 1 или ноль нет??? долбусь с этим который день
__________________
То, что нас не убивает - делает нас сильнее
|
|
|
|
16.06.2011, 00:02
|
#7
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: ШИМ через таймер в LPC
Сообщение от serb-radio
|
Люди, подскажите, почему при инвертировании ноги при совпадении с счетным регистром все работает, а установка в 1 или ноль нет??? долбусь с этим который день
|
Не долбитесь. Без толку. Так он устроен. Ну подумайте - по срабатыванию компаратора происходит инверсия выхода. Всё правильно. На выходе меандр.
Если включен режим с установкой (сбросом), то при срабатывании компаратора выход установится в "1"(сбросится в "0"). По следующему срабатыванию выход тоже установится(сбросится) Нет там автосброса. Это делается в режиме PWM, а его нет в этих таймерах. Для этого есть специальный модуль.
Только вручную. Больше никак.
|
|
|
|
17.06.2011, 14:48
|
#8
|
Гражданин KAZUS.RU
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
|
Re: ШИМ через таймер в LPC
Уважаемый omercury, а не посоветуете как ШИМ через таймер сделать самым оптимальным образом, я делаю через прерывания вот так:
void T2COMP_vect (void) __irq
{
i_bl++;
if (i_bl==0)
{
FIO0SET|=_BV(LCD_BL);
}
if (i_bl==bl_int) FIO0CLR=_BV(LCD_BL);
T2IR|=_BV(0);
VICVectAddr = 0;
return;
}
но оно тормозит (((
__________________
То, что нас не убивает - делает нас сильнее
|
|
|
|
18.06.2011, 16:21
|
#9
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: ШИМ через таймер в LPC
Насколько понял, TOP - T2MR2.
В стартапе T2MCR |=(1‹‹MR2I)|(1‹‹MR2R) //Прерывание по компаратору 2.2, сброс счётчика
В обработчике T2EMR &=~(1‹‹EM3) //Сброс бита. Он просто транслируется на ножку МК
Последний раз редактировалось omercury; 18.06.2011 в 16:39.
|
|
|
Сказали "Спасибо" omercury
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:45.
|
|