国学芯用 发表于 2023-10-19 16:38:49

中断冲突怎么办

本帖最后由 国学芯用 于 2023-10-19 16:42 编辑

帮网友问:我有个SENOSR外部中断10MS会中断一次,怎么办


每次进去读数据要耗时在10MS内,读取数据后,送到TFT屏显示,
又需要通过串口把数据送到上位机实时显示,发现串口发送的时候会影响我刷屏,正常是中断进去后读取数据,在主函数应该是要立刻去扫描屏。
但是抓波形看要25MS左右才去扫屏,然后我把串口打印数据程序屏蔽了,就在1.5MS左右就会去扫屏,是正常的

alexwu 发表于 2023-10-19 17:15:27

每次进去读数据要耗时在10MS内,读取数据后,送到TFT屏显示,又需要通过串口把数据送到上位机用来做实时显示;经测试发现串口发送的时候会影响我程序进入刷屏,正常是中断进去后读完数据,设置了标志位,在主函数应该是要立刻去判断读SENSOR已经完成这时候应该尽快去扫描屏,时间情况如图

alexwu 发表于 2023-10-19 17:21:17

逻辑抓到的波形如下,实际应用中,扫屏内容会比这个数据更多,那扫屏再扫几行,就会导致我SENSOR的下一个中断又进来了,那这个时候我刷屏时序就错了!还请帮看怎么解决,
1)看看这个串口上位机,开关和关都不影响我读完外部中断后的是主函数,快速切入刷TFT屏。2看有没其他啥办法让刷屏,外部中断读取数据,和数据实时传输给上位机不影响各自的功能,芯片用的是STC8H8K64U的

alexwu 发表于 2023-10-19 17:29:32

都是卡时间的,中断读取完后,尽快刷屏,传数据给上位机才是只剩下14MS了怎么用!奇怪的问题是为啥我上位机串口软件,点关闭串口,反而会导致主函数的判断时间更往后推呢?而且是25MS,这个是不行的太久了,只剩下14MS了怎么用,再刷一行显示都不行,下一个中断有到了SENSOR那边

alexwu 发表于 2023-10-19 17:33:49

按道理说,不应该是开串口6.5MS进去(这个我们都嫌慢耗时间能快尽量快),而关闭串口上位机那边,推迟到25MS那好奇怪哦

乘风飞扬 发表于 2023-10-19 17:57:12

alexwu 发表于 2023-10-19 17:33
按道理说,不应该是开串口6.5MS进去(这个我们都嫌慢耗时间能快尽量快),而关闭串口上位机那边,推迟到25M ...

串口发送可以考虑用队列模式,在中断里发送。

神农鼎 发表于 2023-10-19 20:14:21

STC8H8K64U有 DMA 用上 DMA 来支持外设,主频设置到 40MHz

alexwu 发表于 2023-10-20 13:14:33

这个问题帮看怎么解决,这个位置产生中断,就导致刷屏错误了,成了花屏了!!

神农鼎 发表于 2023-10-20 13:28:00

先改成仿真调试,跟踪进去看
不要在外面看靠猜

【新提醒】仿真/ISP下载/做自己的ISP/编译器/头文件 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)




梁工 发表于 2023-10-23 15:24:30

什么传感器?什么接口?要读很多数据吗?10ms是很长的时间了,传感器不应该用10ms中断但读出数据超过10ms的。
页: [1] 2
查看完整版本: 中断冲突怎么办