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

[复制链接]
5741|33
charrijon 发表于 2011-5-3 20:36 | 显示全部楼层
不用想就是程序结构问题,没有time概念
 楼主| czm_gold 发表于 2011-5-4 17:03 | 显示全部楼层
向你学习,两路不同周期PWM脉宽调制同时工作,有冲突,周期变了,很迷惑,请指教。
coody 发表于 2011-5-4 20:14 | 显示全部楼层
偶经常用分场扫描方法做多路PWM,比如12路8bit PWM,时间分辨率为10us左右,频率大约300~400HZ
hotpower 发表于 2011-5-5 00:39 | 显示全部楼层
程序问题居多,发固定周期的两路方波试试。
有个疑问:为何定时10ms?,周期却是25ms?
joyme 发表于 2011-5-5 11:28 | 显示全部楼层
周期为25ms,延时程序是us,LZ到底要产生多高频率的PWM?
晶振用的多少?单片机us延时程序不可能做到精准?51系列单片机一个指令周期=12或6个时钟周期,你的延时函数里执行这么多语句为什么认为延时是1us?
 楼主| czm_gold 发表于 2011-5-6 10:37 | 显示全部楼层
不同工作方式周期不同,有10MS,15MS,25MS,30MS,60MS等,24楼请你指教,用多少毫秒扫描一次?单片机为STC,晶振12M,延时4US,用示波器看基本正确。
joyme 发表于 2011-5-6 11:09 | 显示全部楼层
用最小公约数扫描,到点给相应IO口变换电平
 楼主| czm_gold 发表于 2011-5-6 11:51 | 显示全部楼层
300MS扫描一次,JOYME是吗?
joyme 发表于 2011-5-6 12:23 | 显示全部楼层
这是最小公倍数,不过我也说错了,是最大公约数,呵呵
 楼主| czm_gold 发表于 2011-5-9 10:35 | 显示全部楼层
5MS也不行,不同周期不同扫描时间行吗?JOYME请指教。
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波吧
}
 楼主| czm_gold 发表于 2011-5-9 15:40 | 显示全部楼层
我没说明白,一路有10MS,25MS等方式,另一路有10MS,15MS,25MS,30MS,60MS等方式,两路要同时工作。每一种方式按键可调强度。100US以上用延时不好吗?能告诉QQ号吗?
joyme 发表于 2011-5-9 15:53 | 显示全部楼层
我很少上QQ的,设计单片机程序应该注意在能完全功能前提下,主循环执行时间尽量短、尽量不要用长的延时程序(会影响其他任务的执行),你好好理解一下我上面的写法, 肯定可以实现你要的功能
 楼主| czm_gold 发表于 2011-5-9 15:57 | 显示全部楼层
多谢JOYME!我试试吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部