请教大家,单片机1US中断,能不能正常工作
采用15W104,工作频率为11.0592。中断程序,每1US中断一次补充内容 (2024-8-5 09:57):
不知为什么,我不能回复
STC15W 104属增强型1T 8051单片机。机器周期等于振荡周期,是不是这个中 断就可以正常运行了。 本帖最后由 w6955 于 2024-8-4 15:56 编辑
没大问题,就是不准而已。还是把系统频率提高一些较好,比如35兆。 11mhz时钟,不能正常工作,51每个指令周期都1.xUs了。提高主频才行 晶振頻率11.0592MHz除以12,周期等於1.08507uS,這是15W104的工作節拍。在這個時鐘節拍下,中斷一次所需要的時間是5~7個時鐘周期,也就是5~7uS,這還是進入中斷需要的時間,退出中斷的時間也大致相當,您可以想想1uS一次中斷是否現實。
看代碼是51系列的,不知道現在的51内部器件真可以工作到1/12的工作節拍那麽高的速度?很久沒有關心過51了。
不能!中断时间受到很多因素影响,最短也要几个周期,长则十几个周期,51单片机的性能肯定是做不到1us中断的 做不到,会漏好多。 不行。前面4楼的师傅已经说过了。
并且51一条指令需要十几个,甚至几十个机器周期(时钟周期/12)。一个中断函数,至少需要几十个汇编指令吧,你自己估算下需要的时钟周期。
1mS基本是个极限。就是现在的计算机也做不到1uS的粒度。PC机以前大多是10mS甚至更大,现在很多是1mS。
本帖最后由 joywyc 于 2024-8-4 19:04 编辑
楼主想用单片机的中断,来响应外部随机事件,可以参照下列分析方法进行判断和设计:
1.单片机的指令周期,是按内部机器周期 t 执行的。而单片机内部机器周期 t ,跟外部晶振钟周期 T 之间,还有个比例系数 M 的关系,即 t = MT 。
具体的单片机,可以查其数据手册得到这个机器周期系数 M,并进行指令周期的估算。
2.如果单片机的机器周期系数 M = 1,这个单片机就是单周期指令系统(即一个时钟进行一次指令操作),否则就是多周期指令系统(即M个时钟进行一次指令操作)。
3.如果想用单片机的中断功能,来响应外部随机事件。单片机中断采样周期的选择,应不少于外部随机事件最短时间间隔的两倍。否则,就有可能发生丢失采样的可能性。实际中,常选5~10倍为宜。
还要考虑一条指令占用多少个机器周期的问题。不同的指令占用的机器周期不同。以乘除较多,加减较少。
再就是考虑效率。频繁的在中断中执行,无法执行其他的代码,也是不行的。中断占比应该尽可能的低。
中断的执行应该尽量短,因为在中断中无法响应更低级的中断。
既然要求性能,为啥死抱51不放 中断耗费资源并不低。PC操作系统(Windows, Linux, IOS)10毫秒一次,单片机那处理器的计算能力,只会时间更长才合理。 会中断,但是时间不准确。如果你的程序真的要这样的话,提高时钟频率,改硬件设计等才是出路 chipset009 发表于 2024-8-5 08:59
中断耗费资源并不低。PC操作系统(Windows, Linux, IOS)10毫秒一次,单片机那处理器的计算能力,只会时间更 ...
单片机1ms中断我用过,丝毫不影响整个程序运行效率,主要还要看程序怎么写的 曾经用51试验红外遥控手柄,
晶体12M,
定时26uS中断没问题。
页:
[1]
2