搜索
bottom↓
回复: 34

求助:51单片机产生32路PWM最高效方法

[复制链接]

出0入442汤圆

发表于 2022-11-17 11:13:38 来自手机 | 显示全部楼层
EvanXU 发表于 2022-11-17 10:56
5ms时基最多能产生100HZ翻转吧,占空比固定50%,不可调
(引用自4楼)

可以用stc8试试,我试验过2路adc,192khz中断采样,再配个2m串口在主程序里跑,是没问题的(主频36mhz,定时器中断有一点点抖动)。然后pwm输出可以考虑用寄存器复用输出。

出0入442汤圆

发表于 2022-11-17 11:40:47 | 显示全部楼层
EvanXU 发表于 2022-11-17 11:27
192K中断,有点猛啊,2M串口不敢想象,你这直接起飞,串口和AD咋都用这么高频率?36M主频我也没敢用,据 ...
(引用自10楼)

打算采样192K双通道音频的(我也忘了是256K还是192K了)。这样等效2个通道各96Ksps,做6~8个累加输出1个数生成16KHz的实际采样率。然后发现因为ADC只能挨个转换,因此产生了固定相位差。。后来需求没了,就没继续整了。但是STC跑这么高是没问题的。批量确实存在一致性问题。你的32路PWM计算会占用大量时间。 中断反而是挨个输出,用个并行374之类的倒是可以占用最少的中断输出时间。

出0入442汤圆

发表于 2022-11-17 12:32:09 来自手机 | 显示全部楼层
EvanXU 发表于 2022-11-17 11:57
我还是一直低估了STC,我这个最头疼的就是32路PWM的计算,还必须在中断里边算,导致中断执行时间加长 ...
(引用自15楼)

。。最不济你有10ms的时间计算pwm表。。最笨的办法总共32路,每路256bit,一共用1kbyte内存存储状态表(把pwm当成状态),2kbyte作为2组状态,一组完了切换另一组。需要计算么?除非你没有做过一丁点算法。

出0入442汤圆

发表于 2022-11-17 14:03:37 | 显示全部楼层
本帖最后由 wye11083 于 2022-11-17 14:04 编辑
EvanXU 发表于 2022-11-17 13:17
我这边要占空比随时变化,并不是两个组态就结束的,以空间换时间的方案也可行,但是就要考虑芯片资源了 ...
(引用自20楼)


好吧,随时变化就只能在中断里扫描32个数了——貌似就一个cmp,bset/bclr,clkh,clkl,大概一圈8个指令,32圈256个指令,估计32MHz的STC8绝对能在16个us内跑完。。

还有,你确定PWM要实时变化? 难道不是每新的一轮变化一次? 所以你说的那些意义不大。如果上面那种模式,则最终的PWM输出可能是错乱的——本来固定的111.......00000......变成了随机的,因为你不知道某个值什么时刻变了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-29 05:31

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

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