当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]摘要:介绍如何运用Small RTOS51多任务操作系统进行嵌入式控制器的软件设计。首先介绍Small RTOS51多任务操作系统,然后介绍基于该操作系统进行数据采集器软件系统的设计。

摘要:介绍如何运用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)完成。   串口接收和发送处理采用队列模式,设立发送和接收两个缓冲区,独立的进出队列处理。数据解包和数据打包采用单独处理方式,这样单独处理通信协议,以利于今后协议的改动。   串口缓冲I/O模块的程序见本刊网站www.dpj.com.cn。   系统节拍设置:将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 %26;amp; 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单片机发挥的更有效,并且今后的软件维护和改进更方便,更可靠。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭