bios 发表于 2024-8-4 15:38:13

请教大家,单片机1US中断,能不能正常工作

采用15W104,工作频率为11.0592。中断程序,每1US中断一次


补充内容 (2024-8-5 09:57):
不知为什么,我不能回复
STC15W 104属增强型1T 8051单片机。机器周期等于振荡周期,是不是这个中 断就可以正常运行了。

w6955 发表于 2024-8-4 15:55:22

本帖最后由 w6955 于 2024-8-4 15:56 编辑

没大问题,就是不准而已。还是把系统频率提高一些较好,比如35兆。

mowin 发表于 2024-8-4 16:11:29

11mhz时钟,不能正常工作,51每个指令周期都1.xUs了。提高主频才行

longshort 发表于 2024-8-4 16:18:27

晶振頻率11.0592MHz除以12,周期等於1.08507uS,這是15W104的工作節拍。在這個時鐘節拍下,中斷一次所需要的時間是5~7個時鐘周期,也就是5~7uS,這還是進入中斷需要的時間,退出中斷的時間也大致相當,您可以想想1uS一次中斷是否現實。

看代碼是51系列的,不知道現在的51内部器件真可以工作到1/12的工作節拍那麽高的速度?很久沒有關心過51了。

lrain 发表于 2024-8-4 16:23:18

Aline744 发表于 2024-8-4 17:11:53

不能!中断时间受到很多因素影响,最短也要几个周期,长则十几个周期,51单片机的性能肯定是做不到1us中断的

huxiangming 发表于 2024-8-4 17:45:55

做不到,会漏好多。

ssffzz1 发表于 2024-8-4 17:58:59

不行。前面4楼的师傅已经说过了。

并且51一条指令需要十几个,甚至几十个机器周期(时钟周期/12)。一个中断函数,至少需要几十个汇编指令吧,你自己估算下需要的时钟周期。

1mS基本是个极限。就是现在的计算机也做不到1uS的粒度。PC机以前大多是10mS甚至更大,现在很多是1mS。

joywyc 发表于 2024-8-4 18:59:37

本帖最后由 joywyc 于 2024-8-4 19:04 编辑

楼主想用单片机的中断,来响应外部随机事件,可以参照下列分析方法进行判断和设计:
1.单片机的指令周期,是按内部机器周期 t 执行的。而单片机内部机器周期 t ,跟外部晶振钟周期 T 之间,还有个比例系数 M 的关系,即 t = MT 。
具体的单片机,可以查其数据手册得到这个机器周期系数 M,并进行指令周期的估算。

2.如果单片机的机器周期系数 M = 1,这个单片机就是单周期指令系统(即一个时钟进行一次指令操作),否则就是多周期指令系统(即M个时钟进行一次指令操作)。

3.如果想用单片机的中断功能,来响应外部随机事件。单片机中断采样周期的选择,应不少于外部随机事件最短时间间隔的两倍。否则,就有可能发生丢失采样的可能性。实际中,常选5~10倍为宜。

ssffzz1 发表于 2024-8-4 20:48:23

还要考虑一条指令占用多少个机器周期的问题。不同的指令占用的机器周期不同。以乘除较多,加减较少。


再就是考虑效率。频繁的在中断中执行,无法执行其他的代码,也是不行的。中断占比应该尽可能的低。
中断的执行应该尽量短,因为在中断中无法响应更低级的中断。

iffi123 发表于 2024-8-4 23:12:36

既然要求性能,为啥死抱51不放

chipset009 发表于 2024-8-5 08:59:39

中断耗费资源并不低。PC操作系统(Windows, Linux, IOS)10毫秒一次,单片机那处理器的计算能力,只会时间更长才合理。

快乐毛毛虫 发表于 2024-8-5 14:18:23

会中断,但是时间不准确。如果你的程序真的要这样的话,提高时钟频率,改硬件设计等才是出路

iffi123 发表于 2024-8-5 15:33:58

chipset009 发表于 2024-8-5 08:59
中断耗费资源并不低。PC操作系统(Windows, Linux, IOS)10毫秒一次,单片机那处理器的计算能力,只会时间更 ...

单片机1ms中断我用过,丝毫不影响整个程序运行效率,主要还要看程序怎么写的

lxa000 发表于 2024-8-5 16:01:22

曾经用51试验红外遥控手柄,
晶体12M,
定时26uS中断没问题。
页: [1] 2
查看完整版本: 请教大家,单片机1US中断,能不能正常工作