条码网首页
条码网地图
条码新闻
联系我们  
上海条形码网为您提供各种条形码资讯以及各种条形码设备,有条形码相关的需求,请找上海条形码网。
条形码产品介绍
条形码自主开发
条形码应用方案
条形码相关软件下载
条形码知识介绍
上海条形码网欢迎有志之士的加盟
 
在线解答各种条形码相关的疑问
上海条形码网是专业的条形码网,提供条形码打印机,条形码扫描器,条形码数据采集器等各种条形码硬件产品
条形码产品
  条形码打印机
  美国Intermec条形码打印机
  日本Tec条形码打印机
  美国Zebra 条形码打印机
  日本Sato条形码打印机
  日本Ring条形码打印机
  美国Datamax条形码打印机
  台湾Godex条形码打印机
  台湾TSC条形码打印机
  条形码扫描器
  条形码数据采集器
  条形码软件
  条形码检测仪
  条形码标签
  条形码碳带
  条形码打印机配件
  无线条形码产品
条形码资讯 当前位置: 条形码新闻

基于Small RTOS51的数据采集器软件设计
2004-10-26
摘要:介绍如何运用Small RTOS51多任务操作系统进行嵌入式控制器的软件设计。首先介绍Small RTOS51多任务操作系统,然后介绍基于该操作系统进行数据采集器软件系统的设计。
    关键词:Small RTOS51 多任务操作系统 数据采集器
引 言
  随着嵌入式系统的发展,嵌入式软件设计向软件平台靠近,单片机软件设计不再是单一线程结构方式,而是逐步采用多任务的设计思想。实时内核也称为实时操作系统或RTOS。它使得实时应用程序的设计、扩展和维护变得更容易,不需要大的改动就可以增加新的功能。通过应用程序分割成若干独立的任务,RTOS使得应用程序的设计过程大为简化。使用可剥夺性内核时,所有时间要求苛刻的事件都得到了尽可能快捷、有效的处理。通过有效的服务,如信号量、邮箱、队列、延时、超时等,RTOS使得资源得到更好的利用。
  目前8位单片机在嵌入式系统中,应用还是最广泛的。51多任务系统中,Keil C51 所带的RTX51 Full 太大(6KB多),且需要外部RAM,又无源代码,很多时候不实用。RTX51 Tiny虽然小(900多字节),但是任务没有优先级和中断管理,也无源代码,也不太实用。而uC/OSII虽有源代码,但是它太大,又需要外部RAM,所有函数又必须是重入函数,用在51这类小片内RAM的单片机上有点勉强。Small RTOS为小RAM系统设计,RAM需求小,比较适合51这种资源比较少的系统上。
1 数据采集器系统设计
    1.1 数据采集器原理
  数据采集器是将采集到的电表脉冲信号转换为电能量数据整理保存,并与上行设备通信传输到管理单元进行电表数据的统一管理。
    1.2 硬件设计
  主控制器采用AT89C52芯片,利用7032将脉冲信号采样,经过CPU的处理将数据存储到EEPROM芯片中,数据通过红外信道上传到掌上电脑中。系统框图如图1所示。
2 Small RTOS51多任务操作系统
  Small RTOS是一个源代码公开的多任务实时操作系统,Small RTOS 51是其在8051系列处理器上的移植(使用Keil C51)。Small RTOS可以简化那些复杂而且时间要求严格的工程的软件设计工作。
Small RTOS有以下的特点。
① 公开源代码。只要遵循许可协议,任何人可以免费获得源代码。
② 可移植。尽量把与CPU相关部分压缩到最小,与CPU无关部分用ANSI C编写。
③ 可固化。Small RTOS为嵌入式系统设计,如果有固化手段,它可以嵌入到产品中成为产品的一部分。
④ 占先式。Small RTOS可以管理17个任务,用户最多可以使用16个任务,每个任务优先级不同。
⑤ 中断管理。中断可以使正在执行的任务挂起。如果优先级更高的任务被中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行。中断嵌套层数可达255 层。如果需要,可以禁止中断嵌套管理。
⑥ RAM需求小。Small RTOS为小RAM系统设计,因而RAM需求小,相应的,系统服务也少。
目前,Small RTOS的最新版本为1.20.0。可以进行任务的建立、删除、动态内存分配等操作。
3 任务分解设计
  数据采集器主要包括采集处理、显示处理、按键处理、通信处理等模块,由中断处理相应采集脉冲信号和串口通信。因此,将任务分解为按键显示处理、接收数据、命令处理、发送数据、采样滤波处理、系统检测6个任务。
  主程序进行系统初始化以后,顺序建立6个任务,进入CPU休眠状态。各个任务运行后,首先进入任务休眠状态,等待相应任务的唤醒。任务被唤醒以后,进行相应处理,再次进入休眠状态。这样,可以减少任务切换,减轻系统负担。
  任务框图如图2所示,主程序流程如图3所示。
  脉冲到来时,引发相应外部中断,由中断处理程序处理后,置相应信号量,然后唤醒采样滤波处理任务。采样滤波处理任务将数据整理后,存储到外部存储器中。
  串口数据到来时,引发串口中断,串口中断处理程序唤醒数据接收任务。数据接收任务完成数据包的接收,并根据通信数据包的特点进行错误处理。数据包被正确接收后,唤醒命令处理任务。命令处理任务判断数据包的校验和,若正确就处理相应的命令。命令处理完成以后,将回应数据打包,然后唤醒发送数据任务,将数据通过串口发送出去。
  每个任务均采用以下结构。
while(1)
{
OSWait(K_SIG, 0); // 任务睡眠,等待任务唤醒处理过程
}
任务的唤醒用OSTaskResume(TASK_ID)完成。
  串口接收和发送处理采用队列模式,设立发送和接收两个缓冲区,独立的进出队列处理。数据解包和数据打包采用单独处理方式,这样单独处理通信协议,以利于今后协议的改动。
  系统节拍设置:将OS_TICKS_PER_SEC设为20,即系统时钟节拍为每秒20次。定义定时器0的中断时间设为50ms。
#define m_Fosc 11059200L
#define m_TIME 65536L - (m_Fosc / (OS_TICKS_PER_SEC *
12L))
void InitTimer0(void) {
TMOD = (TMOD & 0xF0) | 0x01;
TH0 = m_TIME / 256;
TL0 = m_TIME % 256;
ET0 = 1;
TF0 = 0;
}
  TestSys任务定时检测各任务的回应,若长时间没有回应,则启动复位功能,热启动整个系统,以保证系统的可靠性。
  由于单片机采用AT89C52,片内RAM为256,使用DS12887中的一部分RAM作为扩展。队列长度各为15个字节时,程序经过9级优化后,RAM占用140字节,XRAM占用106字节。由于系统RAM很小,因此,没有使用信号量和消息进行数据传输。在其它应用时,可以根据系统资源进行信号量和消息的使用,这样可以更有效地使任务运行。
4 结 论
  在嵌入式系统中,使用RTOS是大势所趋,因为在大多数情况下编程效率比执行效率重要。利用Small RTOS多任务系统设计,可以使51单片机发挥的更有效,并且今后的软件维护和改进更方便,更可靠。 
 
版权所有 © 上海条码
电话:021- , 51088351 传真:021-58527920
地址:上海市浦东大道1000弄1号楼502室 邮编:200135 邮箱:mail#tiaoma.org.cn