Перейти к содержанию
    

LPC2368 - PWM

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

 

Начинаю разбираться с LPC2368. Использую IAR 5.0

Уже писал в другую тему - не работали порты GPIO.

Они так и не заработали..

 

Теперь новая проблема:)

Не работает модуль 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

 

Подскажите, пожалуйста, что не так?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может быть мои разборы с PWM для LPC2468 поможет?!

    PINSEL2|=     (3UL << 4);
    //PINMODE???= ???;

    PWM0MR0        = 9000;
    PWM0MR1        = 8000;
    PWM0LER        = 3;

    PWM0IR        = 0;
    PWM0TCR        = (1UL << 0) | (1UL << 3);
    PWM0CTCR    =    0;
    PWM0MCR        = (1UL << 1);
    PWM0CCR        = 0;
    PWM0PCR        = (1UL << 9);
    PWM0PR        = 0;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ура! :08:

Я добил её!)))

 

В общем ниже прога. Она рабочая. 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) { };
}

 

Пока особо не разбирался, в чём разница по сравнению с первой версией. Но в итоге эта работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...