nbsmaps 发表于 2023-3-2 20:24

请教:用定时器如何产生高频对称方波

      STC单片机,频率24MH 定时5US在定时中断,P10=!P10,按理应可以产生对称的方波,但实测为什么高电平4US 低电平9US 而且不管初值是高是低,就是低电平时间长。定时1US的话,则根本输出不了波形了。24M最高输出频率可以达到多少?

dyx8899 发表于 2023-3-2 21:44

是不是指令周期没有考虑进去。先仿真试试看

coody 发表于 2023-3-2 22:48

应该用定时器直接自动取反输出,不用中断,输出12MHz都可以。
你这种情况,估计是中断耗时超过5us了。

ayb_ice 发表于 2023-3-3 08:32

中断的响应是需要时间的,而且取于当前的指令执行情况,你这中断太快了,所以影响很大

kingTek 发表于 2023-3-3 14:03

用的哪个定时器?估计应该是每次装的值变了,24M用指令跑20M方波应该可以做到

nbsmaps 发表于 2023-3-3 14:41

kingTek 发表于 2023-3-3 14:03
用的哪个定时器?估计应该是每次装的值变了,24M用指令跑20M方波应该可以做到 ...

对称方波,100KH都达不到

nbsmaps 发表于 2023-3-3 15:48

dyx8899 发表于 2023-3-2 21:44
是不是指令周期没有考虑进去。先仿真试试看

仿真与直接都一样,按理说指令周期24M 高低电平没5MS好相差

GlenX 发表于 2023-3-5 17:20

24M的STC做US级方波,还真是有点勉强,
很多应者没有这样想:这样产生方波没有问题,但如果误差一个到几个运算周期,无论是中断影响还是CPU自身延迟耽误,
造成的误差是多少呢:1/24吗?
到底多大,算算就知道是否满足你的要求。
包括脉冲、转速测量,我见到过就没关心这个问题,那精度是多少呢,自己也不知道,只知道有时误差大。
这是做任何参与“时间”计量的项目必须严格考核的问题。

nbsmaps 发表于 2023-3-20 16:12

GlenX 发表于 2023-3-5 17:20
24M的STC做US级方波,还真是有点勉强,
很多应者没有这样想:这样产生方波没有问题,但如果误差一个到几个 ...

24M时钟产生US级方波算1US吧,那就是500NSSTC号称比8051快24倍,那么8051 12M晶振是500NS一条指令,而这个500/24差不多50NS一条指令没问题,有10条指令可执行,还不行,实际只有一个指令取反。而且采用PWM根本不要指令了,都是硬件产生的。

nbsmaps 发表于 2023-3-20 17:44

coody 发表于 2023-3-2 22:48
应该用定时器直接自动取反输出,不用中断,输出12MHz都可以。
你这种情况,估计是中断耗时超过5us了。 ...

STC单片机有定时器自动取反方波吗

sjnh 发表于 2023-3-21 09:28

nbsmaps 发表于 2023-3-20 17:44
STC单片机有定时器自动取反方波吗
用定时器PWM方式,就是不知道你用的引脚有没有这个功能

coody 发表于 2023-3-21 15:48

nbsmaps 发表于 2023-3-20 17:44
STC单片机有定时器自动取反方波吗

没看过STC的手册么?每个定时器都可以自动取反输出方波(频率太快了就不要允许中断),输出方波频率=fosc/2/N,比如跑32MHz,可以输出32/2/N=16/N MHz,经常用。

coody 发表于 2023-3-21 15:51

比如STC8系列,定时Timer0可以从P3.5输出24/2/N的方波,N=120时,输出方波频率=24000/2/120=100KHz,N=1~65535,超级方便。

coody 发表于 2023-3-21 16:00

GlenX 发表于 2023-3-5 17:20
24M的STC做US级方波,还真是有点勉强,
很多应者没有这样想:这样产生方波没有问题,但如果误差一个到几个 ...

估计你没用过STC的芯片,用任意一个定时器工作于16位自动重装模式,1T模式,可以输出fosc/2/N的频率,N=1~65535,比如跑32MHz,就可以输出16/N MHz的方波频率,不占用CPU时间。

很多人对STC的MC其实都不熟悉,就是各种猜测,其实STC的MCU不错的了,速度快。
经过实际使用(早两年STM 200+一片转STC),发现很多项目都满足。

最近做的一个替代,是一个DDS芯片,米帝的DDS芯片贵得离谱,还很难买,我只用到500KHz的正弦波/方波,1Hz步进,尝试使用STC32G来做,完美解决,跑32.768MHz,输出采样达到3.2768MHz,0.001Hz步进(32位累加器),10个周期就完成DDS的处理(累加器+频率字,查正弦表输出,循环)。

coody 发表于 2023-3-21 16:03

nbsmaps 发表于 2023-3-3 14:41
对称方波,100KH都达不到

我经常输出10MHz左右的方波,怎么会输不出100KHz?

我用STC15W204S SOP8做的RFID读卡器,单芯片就解决了,LM358都不用,使用MCU内带的比较器恢复数据,软件解码,用定时器输出125KHz方波驱动线圈,可靠读卡距离7~8cm。

rgjinxuan 发表于 2023-3-21 18:57

用PWM产生没问题的

nbsmaps 发表于 2023-4-4 08:27

感谢coody与岛上称霸,STC因为用了很长时间了,一直没用到这个功能,所以就没细看资料了。现在测试一下,是可以直接在定时器引脚输出的。以前的15W好象不行,换8H 8F的都要吧了。谢谢!

nbsmaps 发表于 2023-4-4 08:29

sjnh 发表于 2023-3-21 09:28
用定时器PWM方式,就是不知道你用的引脚有没有这个功能

定时方式就行了,PWM 方式因为频率一直要变,不方便

nbsmaps 发表于 2023-4-4 08:31

coody 发表于 2023-3-21 16:03
我经常输出10MHz左右的方波,怎么会输不出100KHz?

我用STC15W204S SOP8做的RFID读卡器,单芯片就解决了 ...

你也是做读卡器啊,我也是,一直做不出来。想做的远距离读卡,有没有什么好的方案?关键是卡要便宜。到时项目成了,有出售的话,一起分分利润{:biggrin:}
页: [1]
查看完整版本: 请教:用定时器如何产生高频对称方波