Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
16.04.2011, 21:45
|
|
Гражданин KAZUS.RU
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
|
LPC2129 ШИМ
Сконфигурировал вродь правильно, но никак не допру, почему не работает ШИМ.
PHP код:
|
IODIR0 |= (1‹‹1);
IOCLR0 |= (1‹‹1);
PINSEL0 &= ~((1‹‹3)|(1‹‹2)); // select pwm3 on p0.1
PINSEL0 |= (1‹‹3)|(0‹‹2);
PCONP |= (1‹‹5); // powering pwm
PWMPR = 20000; // prescaler
PWMMR3 = 10000;// compare register
PWMMCR = (1‹‹10);// сброс от совпадения pwm3
PWMPCR = (1‹‹11);// включен pwm3
PWMTCR = (1‹‹3)|(1‹‹1)|(1‹‹0);
|
Счетчик не тикает, выход молчит
__________________
Sex, Druggs, Rock&Roll
|
|
|
|
16.04.2011, 22:28
|
|
Гражданин KAZUS.RU
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
|
Re: LPC2129 ШИМ
Поглядите регистр PWMEMR там надо поставить биты "защелкивания" значения регистра сравнения ШИМ, по крайней мере так в LPC2300, поглядите в даташит
Вот гляньте как у меня в LPC23хх
void PWM_conf (void)
{
// присоединение вывода к ШИМ
PINSEL7|=_BV(21); PINSEL7|=_BV(20); //Connect PWM1.3 to pin 26
// включение ШИМ на выводе
PWM1PCR |= _BV(PWMENA3); //включить выод PWMENA 3
PWM1PCR &=~_BV(PWMSEL3); // управление одиночным перепадом
// конфигурирование
PWM1PR=0x00; // предделитель
PWM1MCR|=_BV(1); // сбрасываем при вовпадении счетного регистра с PWMMR0
PWM1MCR|=_BV(0); // прерывание при вовпадении счетного регистра с PWMMR0
PWM1LER|=_BV(0) | _BV(3) ; // включить защелки в канале 0 и 6
PWM1TCR|=_BV(0); // разрешение счета
return;
}
__________________
То, что нас не убивает - делает нас сильнее
Последний раз редактировалось serb-radio; 16.04.2011 в 22:30.
|
|
|
|
17.04.2011, 01:07
|
|
Гражданин KAZUS.RU
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
|
Re: LPC2129 ШИМ
Попробовал по аналогии - ничего. Счетчик не считает
А как вы задаете период и скважность?
__________________
Sex, Druggs, Rock&Roll
|
|
|
|
17.04.2011, 09:14
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,548
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
|
Re: LPC2129 ШИМ
Сообщение от alberio
|
PWMTCR = (1‹‹3)|(1‹‹1)|(1‹‹0);
|
Навскидку первое - у Вас счетчик PWM в ресете.
Цитата:
|
The counters remain reset until TCR[1] is returned to zero.
|
PWMTCR = (1‹‹1); //Сброс PWM таймера
PWMTCR = (1‹‹3)|(1‹‹0); //Разрешение PWM режима и таймера
Последний раз редактировалось AJScorp; 17.04.2011 в 09:20.
|
|
|
Сказали "Спасибо" AJScorp
|
|
|
17.04.2011, 13:12
|
|
Гражданин KAZUS.RU
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
|
Re: LPC2129 ШИМ
Задается в программе в прерывании, для формирования пачки импульсов. Необходимо после задания периода и скважности защелкивать PWMEMR. Так еще поглядите подается ли питание на модуль шимрегистр PCONP
void pow_init (void)
{
//выключение периферии
PCONP&= ~_BV(PCI2C0)& ~_BV(PCRTC) & ~_BV(PCEMC1) &~_BV(PCCAN1) &~_BV(PCCAN2);
PCONP&= ~_BV(PCI2C1) &~_BV(PCSSP1) & ~_BV(PCSPI) & ~_BV(PCUART2) &~_BV(PCUART3);
PCONP&= ~_BV(PCI2C2) & ~_BV(PCI2S) &~_BV(PCSDC) &~_BV(PCGPDMA) &~_BV(PCENET);
PCONP&= ~_BV(PCUSB) & ~ _BV(PCUART0);
// включение периферии
PCONP|= _BV(PCTIM0) | _BV(PCTIM1) | _BV(PCTIM2) | _BV(PCTIM3) | _BV(PCPWM1) | _BV(PCSSP0) | _BV(PCAD);
return;
}
__________________
То, что нас не убивает - делает нас сильнее
|
|
|
|
17.04.2011, 13:44
|
|
Гражданин KAZUS.RU
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
|
Re: LPC2129 ШИМ
Сообщение от AJScorp
|
Навскидку первое - у Вас счетчик PWM в ресете.
|
Так и есть, спасибо - таймер затикал Вот только ШИМа нет. Читаю - и никак не могу понять. Есть регистр PWMPR - прескалер счетчика для модуля ШИМ, есть регистр PWMMR3, для третьего канала ШИМ - регистр сравнения (длительности импульса). А период? Задается PWMPR? Тогда мне непонятно, почему не работает...
PHP код:
|
PWMPR = 100; // prescaler
PWMMR3 = 50; // PWMMR3 compare register
PWMPCR = (1‹‹11); // pwm control включен pwm3
PWMMCR = (1‹‹10);// compare control register сброс от совпадения pwm3
PWMLER = (1‹‹3);
PWMTCR = (1‹‹1);
PWMTCR = (1‹‹3)|(1‹‹0);
|
__________________
Sex, Druggs, Rock&Roll
|
|
|
|
17.04.2011, 14:17
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,548
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
|
Re: LPC2129 ШИМ
Для режима Single Edge PWM установка выхода в "1" происходит по MR0, в "0" по MRx.
Можно установить период в MR0 (PWMMCR = 0x02), а заполнение регулировать через MR3. На рисунке - пример для MR5.
|
|
|
Сказали "Спасибо" AJScorp
|
|
|
17.04.2011, 15:31
|
|
Гражданин KAZUS.RU
Регистрация: 08.07.2006
Сообщений: 583
Сказал спасибо: 76
Сказали Спасибо 90 раз(а) в 66 сообщении(ях)
|
Re: LPC2129 ШИМ
Да, теперь, вроде бы понимаю. То есть регистр одного из каналов играет роль регистра периода для другого - таблица в даташите. В данном случае регистр нулевого канала есть регистром периода для третьего. Ну... немного странно, ведь выходит, что все 6 каналов не запустишь одновременно...
Тем не менее Счетчик считает - сбрасывается, все как надо. Только вот ШИМа на выходе все нет
__________________
Sex, Druggs, Rock&Roll
|
|
|
|
17.04.2011, 16:45
|
|
Гражданин KAZUS.RU
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
|
Re: LPC2129 ШИМ
а PINSEL сконфигурячил как надо? и предделителя чегото большеватое значение
__________________
То, что нас не убивает - делает нас сильнее
|
|
|
|
17.04.2011, 17:15
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Re: LPC2129 ШИМ
Сообщение от alberio
|
Ну... немного странно, ведь выходит, что все 6 каналов не запустишь одновременно...
|
Запускаются 6 одновременно. Только не "все 6", а 6 из семи. Каналов то 7.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:09.
|
|