реклама на сайте
подробности

 
 
> LPC2368 - PWM
mtronic
сообщение Aug 13 2009, 14:58
Сообщение #1





Группа: Участник
Сообщений: 12
Регистрация: 12-08-09
Пользователь №: 51 850



Здравствуйте!

Начинаю разбираться с LPC2368. Использую IAR 5.0
Уже писал в другую тему - не работали порты GPIO.
Они так и не заработали..

Теперь новая проблемаsmile.gif
Не работает модуль PWM1.

Написал программу:
Код
#include <iolpc2368.h>

int main(void)
{
  PCONP_bit.PCPWM1=1;
  
  PWM1MR0=10000;
  PWM1MR1=5000;
  PWM1MR2=7500;
  
  PINSEL4_bit.P2_0=1;
  PINSEL4_bit.P2_1=1;

  PINSEL4_bit.P2_0=0;
  PINSEL4_bit.P2_1=0;

  PINSEL4_bit.P2_0=1;
  PINSEL4_bit.P2_1=1;
  
  PWM1TCR_bit.CR = 0x1;
  PWM1TCR_bit.CE = 0x1;
  
  PWM1TCR_bit.PWMEN=0x1;
  PWM1MCR_bit.PWMMR0R = 0x1;
  PWM1PCR_bit.PWMSEL2=0x1;
  PWM1PCR_bit.PWMENA1=0x1;
  PWM1PCR_bit.PWMENA2=0x1;

  PWM1TCR_bit.CR = 0x0;
  
  PWM1LER_bit.EM0L = 0x1;
  PWM1LER_bit.EM1L = 0x1;
  PWM1LER_bit.EM2L = 0x1;
  
  PWM1TC = 0xffff1fff;
  
  while (1) { };
}


А на осциллографе - тишина...
Строчку про PWM1TC добавил, чтобы меньше считать устройству было до вступления в силу новых значений MR0, MR1 и MR2

Подскажите, пожалуйста, что не так?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
mtronic
сообщение Aug 14 2009, 10:48
Сообщение #2





Группа: Участник
Сообщений: 12
Регистрация: 12-08-09
Пользователь №: 51 850



Ура! 08.gif
Я добил её!)))

В общем ниже прога. Она рабочая. LPC2368, IAR 5.0, J-Tag.

Программа запускает выводы PWM1.1 (в режиме single edge) и PWM1.4 (в режиме double edge). Частота ШИМ 10000*Tclk. Длительность импульса на первом выводе 2000*Tclk, на четвертом 4000*Tclk. Четвертый запускается сразу после первого.

Код
#include <iolpc2368.h>
int main(void)
{
  PCONP_bit.PCPWM1 = 1;
  PCLKSEL0_bit.PCLK_PWM1 = 2;

  PINSEL4_bit.P2_0 = 1;
  PINSEL4_bit.P2_3 = 1;
  PINMODE4_bit.P2_0 = 2;
  PINMODE4_bit.P2_3 = 2;
  
  PWM1TCR_bit.PWMEN = 0;
  PWM1TCR_bit.CE = 0;
  PWM1TCR_bit.CR = 1;
  PWM1CTCR_bit.CM = 0;
  PWM1MCR_bit.PWMMR0R = 1;

  PWM1PCR_bit.PWMSEL4 = 1;
  
  PWM1PCR_bit.PWMENA1 = 1;
  PWM1PCR_bit.PWMENA4 = 1;
  PWM1PR = 0;

  PWM1MR0 = 10000;
  PWM1MR1 = 2000;
  PWM1MR3 = 2000;
  PWM1MR4 = 6000;
  PWM1LER = 0x1B;
  
  PWM1TCR_bit.PWMEN = 1;
  PWM1TCR_bit.CR = 0;
  PWM1TCR_bit.CE = 1;

  while (1) { };
}


Пока особо не разбирался, в чём разница по сравнению с первой версией. Но в итоге эта работает.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 06:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.01369 секунд с 7
ELECTRONIX ©2004-2016