请教大家LPC1768 PWM问题
LPC1768 脉冲宽带调制器 可以控制 6路单边沿PWM的输出,请教大家如何可以控制脉冲的数量,一直用2368,但是木有用过PWM,1768能否实现脉冲数量的控制,请大家帮忙解答一下,谢谢了!{:handshake:} 当然可以了。设置PWM中断,在中断中计算,计数到,停止PWM.
tiger5 发表于 2014-3-7 08:55
当然可以了。
设置PWM中断,在中断中计算,计数到,停止PWM.
谢谢回复,希望能帮忙说的具体些,谢谢您了 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 */
} voidPWM1_IRQHandler(void)
{
LPC_PWM1->IR=0X01;
count++;
}
定义一个全局变量count,计算到你需要的,停止PWM. tiger5 发表于 2014-3-7 09:44
voidPWM1_IRQHandler(void)
{
LPC_PWM1->IR=0X01;
那是非常感谢!{:handshake:} 客气。
上WWW.LPCWARE.COM
有例程。 有32bit的定时器,输出拉一路回来做外部事件计数,把目标值写到比较器里面去,到点了进中断关PWM.
这样速度再快也没关系,中断计数没法跑快的. tiger5 发表于 2014-3-7 10:33
客气。
上WWW.LPCWARE.COM
有例程。
谢谢了,刚才已经实验成功了,我想搞个3D打印机,想用这个控制3个步进电机 error_dan 发表于 2014-3-7 13:05
有32bit的定时器,输出拉一路回来做外部事件计数,把目标值写到比较器里面去,到点了进中断关PWM.
这样速度再 ...
这样是不错,但是我想控制4个步进电机,做3D打印机,您这个方法是不是就不行了呀! 都打印机了,还是用FPGA控制合适 gzhmcu 发表于 2014-3-7 15:26
这样是不错,但是我想控制4个步进电机,做3D打印机,您这个方法是不是就不行了呀! ...
控制几个步进电机没问题,就是不知道精度要求怎样?
有没有反馈? tiger5 发表于 2014-3-7 17:13
控制几个步进电机没问题,就是不知道精度要求怎样?
有没有反馈?
不太高,但是这样的方案一定比老外开源的那个avr的要求精度高,X、Y、Z、E其中XY轴插补!直线与圆弧插补 NJ8888 发表于 2014-3-7 16:29
都打印机了,还是用FPGA控制合适
不懂FPGA,呵呵,见笑了
页:
[1]