您的位置 首页 IC

一个抢先式“裸奔\”体系的规划

一个抢先式“裸奔系统的设计,摘要:在一些资源比较紧张的嵌入式系统中,使用RTOS有时未必能够较好地满足系统较高的实时性要求。在软件设计时,可以借鉴抢先式RTOS实时调度内核的方法,实现更为高效的任务调

摘要:在一些资源比较严重的嵌入式体系中,运用RTOS有时未必能够较好地满意体系较高的实时性要求。在软件设计时,能够学习抢先式RTOS实时调度内核的方法,完结更为高效的使命调度算法,然后完结体系更高的实时性要求。
关键词:嵌入式体系;抢先式调度;实时操作体系;STC12C5410

导言
这是2007年笔者在根据STC12C5410的工控体系里选用的软件技能。体系中有两个以主从方法经过I2C总线进行数据通讯的节点,作为I2C总线的从机节点,因MCU功能约束了数据传输速率,因此每次经过总线传输30个字节的数据需求继续占用几十ms的时刻。因为在进行I2C总线通讯的这段时刻里,体系将不能呼应输入和改动输出(相似体系中止),这么长的时刻延迟关于有较高实时要求的工控体系显得难于忍受。
为此,开始考虑解决问题的方法有3个:
①打断和拆分数据包,选用屡次传输的方法。这样做不光需求修正从机的软件,多个数据包的衔接又让软件变得复杂起来,所以这不是个很好的方法。
②因为I2C总线在进行数据传输中,波特率较低,存在很多短时delay(),能够选用守时中止,在守时中止中只改换一次电平后就回来,然后在后台完结数据发送。但这样就导致中止服务中有必要履行一个很巨大的状态机判别,中止服务中很多的判别也十分耗时耗力,且调试也不方便。
③选用RTOS技能,但在80C51体系上运用RTOS,再精练的实时调度,每个tick的时刻都很难低于1 ms。经测验,I2C总线传输半途遇到1 ms以上的传输中止,会发生总线超时过错,因此在本体系中即便选用RTOS也未必能很好地解决问题。
经过一段时刻对RTOS的剖析和研讨,终究在80C51的裸奔体系中嵌入特别定制的精练的抢先式调度来完结主要使命和I2C总线使命的并行履行,终究获得了很好的作用。
下面就来具体地叙述这个定制的抢先式调度的编程技巧。

1 I2C总线通讯子程序
对I2C总线的时序在此就不作介绍了,下面是部分根据Keil C51模仿主I2C总线的通讯子程序代码如下:


上面是根据80C51模仿I2C总线的通讯程序,其间的HIGH、LOW是1、0的宏界说,idelay()供给时序要求的一段时刻的延时。
不难看出,这和一般的模仿I2C总线的通讯子程序彻底相同。事实上,我也是直接运用了曾经的子程序。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/134732.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部