- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
.
..
RTOS Salvo在单片机中的应用——
遥控LED点阵安全天显示屏
什么是RTOS?
实时操作系统(real-time operating system)简称RTOS。
Salvo是什么?
Salvo是一个能运行在有限的ROM和RAM的单片机上的强大的、高性能的、只需要很少的RAM而不需要堆栈的实时操作系统。它容易使用,能够帮助你为嵌入式系统快速开发出强大的、可靠的且易于维护的应用程序。它可裁剪,适应能力非常强,几乎能用于任何处理器,从PIC到奔腾。
为什么要使用Salvo?
Salvo提供一个强大的、弹性的框架,在它上面你能快速地构建你的程序。如果你面对一个复杂的设计并且性能有限的处理器,Salvo能最大程度地帮助你完成设计。
如果你想:
使你的嵌入式产品抢在竞争对手前头
在你的产品已有硬件基础上添加更多的软件功能
改进一个复杂设计的运转实时性
管理你的越来越复杂的程序
提高你的程序的可靠性
使你掌握多任务RTOS
大多数传统的单片机程序都是在主函数部分中构建一个超级循环,使用中断处理临界事件。这被称作前后台或超级循环系统,中断运行在前台,当没有中断产生时主循环运行在后台。在对程序的维护上,随着功能的增加,使得前台与后台之间的关系越来越复杂,维护越来越困难。RTOS宏观上是多个任务同时运行,内部任务之间使用信号量、消息和消息队列进行通讯和资源共享,增加一个功能只需增加一个任务,任务的运行由系统内核管理,使得维护变得容易。
低成本的单片机是有能力实现实时控制应用的,但对它们编程是一个挑战,实时的内核能够简化复杂软件的设计,然而不幸的是,多数商业化的RTOS需要大量的ROM和RAM,Salvo改变了这些,Salvo将使你的程序运行的更快,它提供给你一个明白而又容易理解的多任务程序框架,只用很少的空间完成你的工作。
Salvo与其它的RTOS的不同点
Salvo是一个并发式的RTOS,因此必须明确地管理任务的切换,每个任务必须至少进行一次上下文切换。
只能在任务中而不能在函数中进行上下文切换,这是因为单片机的堆栈很小。
对比其它需要大量RAM的并发式或抢占式RTOS,Salvo可能是你唯一的选择。
Salvo需要哪些资源?
在单片机上,一个典型的多任务程序,Salvo代码可能需要占用大约1K ROM每个任务大约占用4-12个字节,每个事件3-4个字节另外需要4-6个字节去管理所有的任务、事件和延时。如果你计划使用延时和超时服务,Salvo需要提供一个中断信号,但这个中断信号不必专门给Salvo使用,也同时用于其它方面。任务和事件的数量仅仅受内存的限制。
使用Salvo需要哪些知识?
1、C语言的知识,但即使你是一C语言的初学者,你学习Salvo也不应该感到很困难。
2、一些RTOS的基本知识。
下面结合一个实际进行介绍,本设计使用一片AVR单片机ATmega16,它是mega系列的主流型号,性价比高,具有16K的flash,512字节的EEPROM,1K字节的RAM,没有扩展外部了ROM和RAM便可运行RTOS,完成点阵扫描和红外线遥控调整时间、安全天数。显示内容:“今天是:xxxx年xx月xx日 星期x xx时xx分,当前气温xx.x℃ 已安全运行:xxxx天。”从右向左流滚动显示。
一、硬件的组成及工作原理 (1)CPU控制板:原理见图一,以ATmega16为核心,扩展一片4-16译码器CD4514,驱动ULN2003完成LED的行扫描。实时时钟由DS1302及3.6V充电电池组成,掉电时时钟仍能工作。J3是ISP程序下载接口,J4是程序调试接口,J8是外接调整按钮,不用遥控器也能手动调整参数,J5是一体化红外线接收头。ATmega16具有硬件的SPI接口,可直接驱动串行移位芯片74HC595。
(2)LED显示板:原理见图二,由16块8*8LED点阵拼结而成,可同时显示4个汉字,8片74HC595完成显示屏的列驱动。
两块电路板之间用40芯的排线联接,在CPU的内部RAM开辟一块显示缓存区,CPU控制板读取flash内部的汉字点阵编码,写入到显示缓存区,然后读取显存中第一行数据,通过SPI接口驱动74HC595,将串行数据转为并行,然后将接通对应的行,显示1ms后,取下一行的数据,同样显示1ms,直到第16行,完成一次扫描。再把显存中的数据整体左移一位,再扫描一遍。如此把全部的汉字依次移入显存并显示,便实现了汉字从右向左移,全部汉字移完后对时间、温度和安全天数的寄存器刷新一次。
二、程序的基本结构
首先,根据功能上的独立性划分任务,分为:时间读写、温度采集、LED扫描显示、日期天数调整和被调参数闪烁等五个任务。其次确定任务的优先级,时间读写、温度采集8级,日期天数调整和
文档评论(0)