找回密码
 立即注册
查看: 2175|回复: 8

请教STC8H1K系列外部中断响应速度

[复制链接]

1

主题

1

回帖

71

积分

注册会员

积分
71
发表于 2023-4-27 19:22:04 | 显示全部楼层 |阅读模式
各位大佬们好!我想了解一下STC8H1K系列单片机的外部中断的响应速度。

具体地说,就是假设外设向INT0引脚发出一个脉冲,从这一瞬间开始计算,到单片机开始执行INT0的中断服务函数的第一条指令为止,一共需要经历多少个时钟周期。
不考虑中断嵌套,即INT0中断的优先级为最高。

我目前遇到的实际问题是采集一个外设总线上的数据。根据外设手册的描述,如下图所示,我将外设的地址总线和数据总线直接挂在STC的GPIO口,外设的CLK接到INT0引脚。
我是希望通过INT0检测到CLK的上升沿后触发中断,然后在中断服务中直接读GPIO获取到数据,并且进行后续处理。

外设时序图

外设时序图


由于CLK频率相当高(1MHz),所以留给我的时间十分紧张。尤其是我并不知晓STC的外部中断的响应速度到底有多快,所以特意过来咨询一下诸位大佬,关于外部中断响应速度方面是否有确切的数据。

希望大佬们能够给予我一些指点和建议!谢谢!
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:100
  • 最近打卡:2025-06-17 08:13:13

734

主题

1万

回帖

1万

积分

管理员

积分
16690
发表于 2023-4-27 19:39:11 | 显示全部楼层
我都忘了,
但按普通8051的来理解,当前指令执行完,去响应/LCALL ?的时间 ?

真忘了,下班时间也不想去问同事,望理解,  基本《 6个时钟  ? 这么快 ? 我都不信了
1.png
1.png

内部认真仿真后写了如下文章
http://www.stcmcudata.com/STC8F-DATASHEET/STC8H.pdf

现在的STC8系列 MCU 是多级流水线的8位现代8051,如下
截图202310151801263793.jpg

STC89C52RC/STC89C58RD+系列是传统的8051,如下
截图202310151800019267.jpg


回复 支持 反对

使用道具 举报 送花

1

主题

1

回帖

71

积分

注册会员

积分
71
发表于 2023-4-27 19:48:01 | 显示全部楼层
感谢大佬指点!
不过中断和普通的函数调用不一样吧?毕竟中断还有触发信号采样、优先级裁决、标志位置位复位等等一系列硬件工作,它绝不可能只是一个LCALL指令的时间。

点评

搞生产N年了,您按普通8051的理解就对了, 我们只是指令平均快了 13.2倍  发表于 2023-4-27 19:53
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:559
  • 最近打卡:2025-06-17 07:05:23

24

主题

524

回帖

1228

积分

荣誉版主

积分
1228
发表于 2023-4-28 20:16:12 | 显示全部楼层
我做过测试,6---8个时钟。
测试方法:pwm输出100Khz接P32,INT0中断函数对P54取反。用逻辑分析仪和示波器抓这几个信号。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:100
  • 最近打卡:2025-06-17 08:13:13

734

主题

1万

回帖

1万

积分

管理员

积分
16690
发表于 2023-4-28 20:48:35 | 显示全部楼层
取反也需要时间,指令执行完,实际/O外部由于分布电容的原因还不一定立即就测试到反了
====基本《 6个时钟  ? 这么快 ? 我都不信了

目测这3条指令需要的时钟数偏多
1.png
2.png

3.png
我都忘了,
但按普通8051的来理解,当前指令执行完,去响应/LCALL ?的时间 ?

真忘了,下班时间也不想去问同事,望理解,  基本《 6个时钟  ? 这么快 ? 我都不信了


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:95
  • 最近打卡:2025-06-17 10:15:05

74

主题

6094

回帖

1万

积分

超级版主

积分
12735
发表于 2023-5-5 16:23:58 | 显示全部楼层
STC8系列,按最长的时间大约分析,只考虑操作步骤,实际PC的运行可能有点出入,但差别不大。响应中断是硬件全自动执行的。
1、1T。中断采样是一个时钟,也就是说,上升沿或下降沿出现后,最多一个时钟就能设置中断标志。
2、1~6T。MCU准备响应中断,等待当前执行的指令完成,指令长度是1~6T。
3、2T。  然后MCU响应中断,将PC指针入栈,执行2条入栈指令,2T。
4、1T。装载中断服务地址到DPTR,1T。
5、3T。执行长跳转指令LJMP,进入中断服务入口,3T。
上述指令需要8~13个时钟,对于24MHz,就是0.33~0.54us。
由于STC8系列绝大部分指令都是单周期,少数PC转向指令是3周期,2个指令4周期,1个指令6周期,所以响应中断时大概率是8周期。

退出中断服务:
1、2T。  将断点地址出栈给PC指针,执行2条出栈指令,2T。
4、3T。中断返回指令RETI。

用户可以看看STC8系列的汇编命令周期数,大部分指令基本就是1T的,真的是天花板了。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:100
  • 最近打卡:2025-06-17 08:13:13

734

主题

1万

回帖

1万

积分

管理员

积分
16690
发表于 2023-5-6 11:12:56 | 显示全部楼层
如果是如下算起:
(1)采样感测 INT0,2个时钟,要判断高低变化
(2)中断承诺 INT ACK, 0个时钟
(3)去INT vector 取资料(通常放的內容是call), 3个时钟
(4)执行LCALL, 3个时钟
(5)第7个时钟, 是ISR第一个命令被执行
STACK的处理,包含在(3)中
至少7个时钟

如果是如下算起:
(1)已判断到中断条件发生,不算这2个时钟
(2)中断承诺 INT ACK, 0个时钟
(3)去INT vector 取资料(通常放的內容是call), 3个时钟
(4)执行LCALL, 3个时钟
(5)第5个时钟, 是ISR第一个命令被执行
STACK的处理,包含在(3)中
至少5个时钟


如上内部研发答复,大家只要加上我提的,当前指令执行完这个跑不掉的槛
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:100
  • 最近打卡:2025-06-17 08:13:13

734

主题

1万

回帖

1万

积分

管理员

积分
16690
发表于 2023-10-15 18:05:51 | 显示全部楼层
内部认真仿真后写了如下文章
http://www.stcmcudata.com/STC8F-DATASHEET/STC8H.pdf

现在的STC8系列 MCU 是多级流水线的8位现代8051,如下


STC89C52RC/STC89C58RD+系列是传统的8051,如下


回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-17 23:58 , Processed in 0.153452 second(s), 88 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表