[PIC®/AVR®/dsPIC®产品] 无法实现100KHz输出

[复制链接]
1457|38
huwr 发表于 2023-3-31 21:56 | 显示全部楼层
而且判断标志位和清标志,再给TMR0赋初值,再执行模拟PWM的代码,这些都是消耗
xxrs 发表于 2023-3-31 21:58 | 显示全部楼层
写得不够精简的话60uS是会有的
dengdc 发表于 2023-3-31 21:59 | 显示全部楼层
如果开了中断,进出中断的现场保护和现场恢复是8句代码就白白耗了8uS。
heweibig 发表于 2023-3-31 22:00 | 显示全部楼层
极端的情况下,MCU只做PWM其他事不做
huangchui 发表于 2023-3-31 22:02 | 显示全部楼层
嗯,并且PWM位数是1bit,也就是直接翻转IO
huwr 发表于 2023-3-31 22:04 | 显示全部楼层
下面的汇编代码,GP0完成2次翻转(1个方波)需要8us((1+1+2)*2)。
huwr 发表于 2023-3-31 22:04 | 显示全部楼层
MAIN_LOOP:
MOVLW   B'00000001'
XORWF   GPIO,F
GOTO      MAIN_LOOP
happy_10 发表于 2023-3-31 22:05 | 显示全部楼层
这么极端的做法,频率也就125KHz。
liliang9554 发表于 2023-3-31 22:08 | 显示全部楼层
所以这么低主频+机器周期长(4T)的CPU,确实不适合做高速模拟PWM。
happy_10 发表于 2023-3-31 22:09 | 显示全部楼层
可以换个其他型号带硬件PWM的。
liliang9554 发表于 2023-3-31 22:10 | 显示全部楼层
不用重复MOVLW   B'00000001'
happy_10 发表于 2023-3-31 22:12 | 显示全部楼层
是的,直接在主循环外边给W放0x01即可。
hanwe 发表于 2023-3-31 22:14 | 显示全部楼层
有些整值确实是输出不了
happy_10 发表于 2023-3-31 22:20 | 显示全部楼层
只要在一定的容差范围内就可以了
hanwe 发表于 2023-3-31 22:21 | 显示全部楼层
只要差不了太多就可以了
liliang9554 发表于 2023-3-31 22:22 | 显示全部楼层
用c如何表述呢
hanwe 发表于 2023-3-31 22:24 | 显示全部楼层
好像都是一样的算法
 楼主| wenfen 发表于 2023-3-31 22:26 | 显示全部楼层

其实还是不大明白,我再琢磨琢磨吧,多谢了哈先
charrijon 发表于 2023-4-1 15:52 | 显示全部楼层
哈哈,你这紧中断压栈出栈都得花1us以上时间,这个小mcu搞不定的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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