搜索
bottom↓
回复: 13

请教大家LPC1768 PWM问题

[复制链接]

出0入0汤圆

发表于 2014-3-7 08:29:40 | 显示全部楼层 |阅读模式
LPC1768 脉冲宽带调制器 可以控制 6路单边沿PWM的输出,请教大家如何可以控制脉冲的数量,一直用2368,但是木有用过PWM,1768能否实现脉冲数量的控制,请大家帮忙解答一下,谢谢了!

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2014-3-7 08:55:48 | 显示全部楼层
当然可以了。
设置PWM中断,在中断中计算,计数到,停止PWM.

出0入0汤圆

 楼主| 发表于 2014-3-7 09:06:03 | 显示全部楼层
tiger5 发表于 2014-3-7 08:55
当然可以了。
设置PWM中断,在中断中计算,计数到,停止PWM.

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

出0入0汤圆

发表于 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 */
}

出0入0汤圆

发表于 2014-3-7 09:44:38 | 显示全部楼层
void  PWM1_IRQHandler(void)
{
                LPC_PWM1->IR=0X01;

    count++;
}

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

出0入0汤圆

 楼主| 发表于 2014-3-7 10:07:36 | 显示全部楼层
tiger5 发表于 2014-3-7 09:44
void  PWM1_IRQHandler(void)
{
                LPC_PWM1->IR=0X01;

那是非常感谢!

出0入0汤圆

发表于 2014-3-7 10:33:53 | 显示全部楼层
客气。
WWW.LPCWARE.COM
有例程。

出0入0汤圆

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

出0入0汤圆

 楼主| 发表于 2014-3-7 15:25:30 | 显示全部楼层
tiger5 发表于 2014-3-7 10:33
客气。
上WWW.LPCWARE.COM
有例程。

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

出0入0汤圆

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

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

出0入0汤圆

发表于 2014-3-7 16:29:41 | 显示全部楼层
都打印机了,还是用FPGA控制合适

出0入0汤圆

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

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

出0入0汤圆

 楼主| 发表于 2014-3-8 08:08:16 | 显示全部楼层
tiger5 发表于 2014-3-7 17:13
控制几个步进电机没问题,就是不知道精度要求怎样?
有没有反馈?

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

出0入0汤圆

 楼主| 发表于 2014-3-8 08:09:16 | 显示全部楼层
NJ8888 发表于 2014-3-7 16:29
都打印机了,还是用FPGA控制合适

不懂FPGA,呵呵,见笑了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 10:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表