发新帖我要提问
12
返回列表
打印
[PIC®/AVR®/dsPIC®产品]

无法实现100KHz输出

[复制链接]
楼主: wenfen
手机看帖
扫描二维码
随时随地手机跟帖
21
huwr| | 2023-3-31 21:56 | 只看该作者 回帖奖励 |倒序浏览
而且判断标志位和清标志,再给TMR0赋初值,再执行模拟PWM的代码,这些都是消耗

使用特权

评论回复
22
xxrs| | 2023-3-31 21:58 | 只看该作者
写得不够精简的话60uS是会有的

使用特权

评论回复
23
dengdc| | 2023-3-31 21:59 | 只看该作者
如果开了中断,进出中断的现场保护和现场恢复是8句代码就白白耗了8uS。

使用特权

评论回复
24
heweibig| | 2023-3-31 22:00 | 只看该作者
极端的情况下,MCU只做PWM其他事不做

使用特权

评论回复
25
huangchui| | 2023-3-31 22:02 | 只看该作者
嗯,并且PWM位数是1bit,也就是直接翻转IO

使用特权

评论回复
26
huwr| | 2023-3-31 22:04 | 只看该作者
下面的汇编代码,GP0完成2次翻转(1个方波)需要8us((1+1+2)*2)。

使用特权

评论回复
27
huwr| | 2023-3-31 22:04 | 只看该作者
MAIN_LOOP:
MOVLW   B'00000001'
XORWF   GPIO,F
GOTO      MAIN_LOOP

使用特权

评论回复
28
happy_10| | 2023-3-31 22:05 | 只看该作者
这么极端的做法,频率也就125KHz。

使用特权

评论回复
29
liliang9554| | 2023-3-31 22:08 | 只看该作者
所以这么低主频+机器周期长(4T)的CPU,确实不适合做高速模拟PWM。

使用特权

评论回复
30
happy_10| | 2023-3-31 22:09 | 只看该作者
可以换个其他型号带硬件PWM的。

使用特权

评论回复
31
liliang9554| | 2023-3-31 22:10 | 只看该作者
不用重复MOVLW   B'00000001'

使用特权

评论回复
32
happy_10| | 2023-3-31 22:12 | 只看该作者
是的,直接在主循环外边给W放0x01即可。

使用特权

评论回复
33
hanwe| | 2023-3-31 22:14 | 只看该作者
有些整值确实是输出不了

使用特权

评论回复
34
happy_10| | 2023-3-31 22:20 | 只看该作者
只要在一定的容差范围内就可以了

使用特权

评论回复
35
hanwe| | 2023-3-31 22:21 | 只看该作者
只要差不了太多就可以了

使用特权

评论回复
36
liliang9554| | 2023-3-31 22:22 | 只看该作者
用c如何表述呢

使用特权

评论回复
37
hanwe| | 2023-3-31 22:24 | 只看该作者
好像都是一样的算法

使用特权

评论回复
38
wenfen|  楼主 | 2023-3-31 22:26 | 只看该作者

其实还是不大明白,我再琢磨琢磨吧,多谢了哈先

使用特权

评论回复
39
charrijon| | 2023-4-1 15:52 | 只看该作者
哈哈,你这紧中断压栈出栈都得花1us以上时间,这个小mcu搞不定的

使用特权

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

本版积分规则