gzhmcu 发表于 2014-3-7 08:29:40

请教大家LPC1768 PWM问题

LPC1768 脉冲宽带调制器 可以控制 6路单边沿PWM的输出,请教大家如何可以控制脉冲的数量,一直用2368,但是木有用过PWM,1768能否实现脉冲数量的控制,请大家帮忙解答一下,谢谢了!{:handshake:}

tiger5 发表于 2014-3-7 08:55:48

当然可以了。
设置PWM中断,在中断中计算,计数到,停止PWM.

gzhmcu 发表于 2014-3-7 09:06:03

tiger5 发表于 2014-3-7 08:55
当然可以了。
设置PWM中断,在中断中计算,计数到,停止PWM.

谢谢回复,希望能帮忙说的具体些,谢谢您了

tiger5 发表于 2014-3-7 09:43:45

LPC_SC->PCONP |=PCPWM1;
        LPC_PINCON->PINSEL4 = (LPC_PINCON->PINSEL4&(~(3<<(2 * 5))))|(1<<(2 * 5));

       LPC_PWM1->TCR        =0X02;
       LPC_PWM1->PR        =0X00;
       LPC_PWM1->MCR        =0x03;
       LPC_PWM1->MR0        =MotorStep.Cycle;
       LPC_PWM1->MR6        =MotorStep.Cycle/2;
       LPC_PWM1->LER        =0X41;
       //LPC_PWM1->PCR=0X4000;       
       //LPC_PWM1->TCR=0X09;

       NVIC_SetPriority(PWM1_IRQn, 1);
       NVIC_EnableIRQ(PWM1_IRQn);



void PWM6RunFunc(void)
{
       LPC_PWM1->TCR        =0X02;
       PWM_Set(MotorStep.Cycle);
       PWM_Start();
}

void PWM_Set( uint32 cycle )
{                       
        LPC_PWM1->MR0 = cycle;               
        LPC_PWM1->MR6 = cycle/2;

        LPC_PWM1->LER = 0x41;
}

void PWM_Start( void )
{
        LPC_PWM1->PCR        =0X4000;
        LPC_PWM1->TCR        =0X09;
}

void PWM_Stop( void)
{
        LPC_PWM1->PCR         = 0;
        LPC_PWM1->TCR         = 0x00;                /* Stop all PWMs */
}

tiger5 发表于 2014-3-7 09:44:38

voidPWM1_IRQHandler(void)
{
                LPC_PWM1->IR=0X01;

    count++;
}

定义一个全局变量count,计算到你需要的,停止PWM.

gzhmcu 发表于 2014-3-7 10:07:36

tiger5 发表于 2014-3-7 09:44
voidPWM1_IRQHandler(void)
{
                LPC_PWM1->IR=0X01;


那是非常感谢!{:handshake:}

tiger5 发表于 2014-3-7 10:33:53

客气。
上WWW.LPCWARE.COM
有例程。

error_dan 发表于 2014-3-7 13:05:17

有32bit的定时器,输出拉一路回来做外部事件计数,把目标值写到比较器里面去,到点了进中断关PWM.
这样速度再快也没关系,中断计数没法跑快的.

gzhmcu 发表于 2014-3-7 15:25:30

tiger5 发表于 2014-3-7 10:33
客气。
上WWW.LPCWARE.COM
有例程。

谢谢了,刚才已经实验成功了,我想搞个3D打印机,想用这个控制3个步进电机

gzhmcu 发表于 2014-3-7 15:26:38

error_dan 发表于 2014-3-7 13:05
有32bit的定时器,输出拉一路回来做外部事件计数,把目标值写到比较器里面去,到点了进中断关PWM.
这样速度再 ...

这样是不错,但是我想控制4个步进电机,做3D打印机,您这个方法是不是就不行了呀!

NJ8888 发表于 2014-3-7 16:29:41

都打印机了,还是用FPGA控制合适

tiger5 发表于 2014-3-7 17:13:22

gzhmcu 发表于 2014-3-7 15:26
这样是不错,但是我想控制4个步进电机,做3D打印机,您这个方法是不是就不行了呀! ...

控制几个步进电机没问题,就是不知道精度要求怎样?
有没有反馈?

gzhmcu 发表于 2014-3-8 08:08:16

tiger5 发表于 2014-3-7 17:13
控制几个步进电机没问题,就是不知道精度要求怎样?
有没有反馈?

不太高,但是这样的方案一定比老外开源的那个avr的要求精度高,X、Y、Z、E其中XY轴插补!直线与圆弧插补

gzhmcu 发表于 2014-3-8 08:09:16

NJ8888 发表于 2014-3-7 16:29
都打印机了,还是用FPGA控制合适

不懂FPGA,呵呵,见笑了
页: [1]
查看完整版本: 请教大家LPC1768 PWM问题