搜索
bottom↓
回复: 11

求一个好点的算法逻辑,单片机中断相关

[复制链接]

出0入0汤圆

发表于 2015-5-20 22:55:33 | 显示全部楼层 |阅读模式
有个MCU,串口中断不断的接收数据,按字节计数++,另外有个10ms的定时器,一直开着,也就是一直是10ms产生一次中断,现在想利用这10ms的定时器产生的中断,在这个中断中实现每20毫秒判断一次串口是处于接收数据的忙状态还是处于空闲状态,说明:串口中断是按帧接收数据的,我的意思就是想判断目前数据帧是否接收完毕,还是说处于正在接收状态。
搞了好久,测试都不准,我想请教下大家,有没有好点的算法逻辑,还是说我的逻辑是不合理的。欢迎大虾拍砖,在线等,急用,谢谢。

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2015-5-20 23:08:47 | 显示全部楼层
定义一个超时计数器
uint32_t  g_wTimerOutCnt;
每次串口中断后,对g_wTimerOutCnt进行清零
每次定时中断后,检测g_wTimerOutCnt是否超出上限TIMEOUT,超出则判断为帧结束,并且切换到数据接收完成状态
                                否则    并且   当前处于接收帧状态时   执行  g_wTimerOutCnt +=1;

出0入0汤圆

发表于 2015-5-21 06:53:24 来自手机 | 显示全部楼层
看看freemodbus的实现就明白了。

出0入0汤圆

发表于 2015-5-21 08:51:31 | 显示全部楼层
2楼正解,就看楼主明白了不,超时定时器的时间就是你的帧最小间隔,比如Modbus帧间隔是3.5个字符。

出0入30汤圆

发表于 2015-5-21 08:53:30 | 显示全部楼层
2楼已经说得很清楚了,还以为是什么新问题,原来就是串口接收数据什么时候结束的判断。当然,这个超时判断的timeout得根据波特率来,比如9600 bps,差不多1ms 1个字节,你可以设置为超时5ms认为帧传输结束。

出0入0汤圆

发表于 2015-5-21 09:00:40 | 显示全部楼层
这个需要你算一下你的波特率,还有数据帧是多长,传输间隔是多少。比如波特率9600,大概1ms一个字节。1个数据帧10个字节,大概10ms就传完了。间隔一般设定长一点,这样才好判断。如果你一个包传10ms,间隔5ms又传,处理起来就相对麻烦一点。

出20入186汤圆

发表于 2015-5-21 09:06:53 | 显示全部楼层
这不就是串口超时么,玩MODBUS协议?简单啊,从收到的第一个字节数据开始,开启定时器中断,中断触发后检测收到完毕否,而不是像你现在这样一直开着定时器中断

出0入0汤圆

发表于 2015-5-21 09:10:31 | 显示全部楼层
有个特殊字节,收到这个数据,帧完成。定时的话,你的帧间隔要大于定时器。把中断搞短点,比如1MS,弄个计数器++,每次收到一个数据,计数器ZERO,当计数器大于20时,帧完成。

出0入0汤圆

发表于 2015-5-21 10:07:29 | 显示全部楼层
如三楼,建议还是看看吧

出0入0汤圆

发表于 2015-5-28 13:21:37 | 显示全部楼层
有点不明白解决办法,在此受教了,

出0入0汤圆

发表于 2015-6-1 10:34:38 | 显示全部楼层
RAMILE 发表于 2015-5-20 23:08
定义一个超时计数器
uint32_t  g_wTimerOutCnt;
每次串口中断后,对g_wTimerOutCnt进行清零

相同想法

出0入0汤圆

发表于 2015-6-1 12:04:54 | 显示全部楼层
在二楼基础上可以再简单一些,根据你的波特率设定好超时时间比如10ms
每次串口中断后,对超时计数器进行清零,此时正在接收状态
每次定时中断后,是接收完毕状态
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 08:34

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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