发新帖我要提问
12
返回列表
打印

两路PWM脉宽调制产生波形互相干扰

[复制链接]
楼主: czm_gold
手机看帖
扫描二维码
随时随地手机跟帖
21
charrijon| | 2011-5-3 20:36 | 只看该作者 回帖奖励 |倒序浏览
不用想就是程序结构问题,没有time概念

使用特权

评论回复
22
czm_gold|  楼主 | 2011-5-4 17:03 | 只看该作者
向你学习,两路不同周期PWM脉宽调制同时工作,有冲突,周期变了,很迷惑,请指教。

使用特权

评论回复
23
coody| | 2011-5-4 20:14 | 只看该作者
偶经常用分场扫描方法做多路PWM,比如12路8bit PWM,时间分辨率为10us左右,频率大约300~400HZ

使用特权

评论回复
24
hotpower| | 2011-5-5 00:39 | 只看该作者
程序问题居多,发固定周期的两路方波试试。
有个疑问:为何定时10ms?,周期却是25ms?

使用特权

评论回复
25
joyme| | 2011-5-5 11:28 | 只看该作者
周期为25ms,延时程序是us,LZ到底要产生多高频率的PWM?
晶振用的多少?单片机us延时程序不可能做到精准?51系列单片机一个指令周期=12或6个时钟周期,你的延时函数里执行这么多语句为什么认为延时是1us?

使用特权

评论回复
26
czm_gold|  楼主 | 2011-5-6 10:37 | 只看该作者
不同工作方式周期不同,有10MS,15MS,25MS,30MS,60MS等,24楼请你指教,用多少毫秒扫描一次?单片机为STC,晶振12M,延时4US,用示波器看基本正确。

使用特权

评论回复
27
joyme| | 2011-5-6 11:09 | 只看该作者
用最小公约数扫描,到点给相应IO口变换电平

使用特权

评论回复
28
czm_gold|  楼主 | 2011-5-6 11:51 | 只看该作者
300MS扫描一次,JOYME是吗?

使用特权

评论回复
29
joyme| | 2011-5-6 12:23 | 只看该作者
这是最小公倍数,不过我也说错了,是最大公约数,呵呵

使用特权

评论回复
30
czm_gold|  楼主 | 2011-5-9 10:35 | 只看该作者
5MS也不行,不同周期不同扫描时间行吗?JOYME请指教。

使用特权

评论回复
31
joyme| | 2011-5-9 11:10 | 只看该作者
说实话我还没有明白你具体的要求,前面说是25ms周期的PWM两路,要说通过延时实现,而你的延时程序说是4us。建议产生100us以上的脉冲不要用延时实现,还是用timer比较
5ms定时器中断,在终端了设一个变量count_base++
主循环扫描count_base的值
if(count_base % 2 == 0)
{
     change_10ms_pin;
     start_2s_count;
}
else if(count_base % 3== 0)
{
      change_15ms_pin;
}
以此类推,应该可以实现你要的PWM波吧
}

使用特权

评论回复
32
czm_gold|  楼主 | 2011-5-9 15:40 | 只看该作者
我没说明白,一路有10MS,25MS等方式,另一路有10MS,15MS,25MS,30MS,60MS等方式,两路要同时工作。每一种方式按键可调强度。100US以上用延时不好吗?能告诉QQ号吗?

使用特权

评论回复
33
joyme| | 2011-5-9 15:53 | 只看该作者
我很少上QQ的,设计单片机程序应该注意在能完全功能前提下,主循环执行时间尽量短、尽量不要用长的延时程序(会影响其他任务的执行),你好好理解一下我上面的写法, 肯定可以实现你要的功能

使用特权

评论回复
34
czm_gold|  楼主 | 2011-5-9 15:57 | 只看该作者
多谢JOYME!我试试吧。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则