μCOS-II实时内核下的AD驱动程序设计.doc

μCOS-II实时内核下的AD驱动程序设计.doc

ID:61499162

大小:159.50 KB

页数:7页

时间:2021-02-07

μCOS-II实时内核下的AD驱动程序设计.doc_第1页
μCOS-II实时内核下的AD驱动程序设计.doc_第2页
μCOS-II实时内核下的AD驱动程序设计.doc_第3页
μCOS-II实时内核下的AD驱动程序设计.doc_第4页
μCOS-II实时内核下的AD驱动程序设计.doc_第5页
资源描述:

《μCOS-II实时内核下的AD驱动程序设计.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、μC/OS-II实时内核下的A/D驱动程序设计关于应用RPT在性能测试的思考谈谈嵌入式操作系统的调试问题软件测试中的性能测试的容量评估上海英孚教育急聘系统管理员 初级程序员 软件开发工程师数据库工程师高级项目经理界面设计经理中国IT实验室整理佚名2008-12-24保存本文推荐给好友收藏本页欢迎进入IT技术社区论坛,与200万技术人员互动交流>>进入  本文详细分析在μC/OS-II实时内核下驱动程序读取A/D的三种方法;阐述C8051F015单片机的A/D转换器的配置、转换特点及其驱动程序读取A/D采用的方法;针对C8051F015单片机分析A/D驱动程序设计的方法和思想。这些方

2、法和思想为在μC/OS-II下访问其它类型的A/D提供了很好的借鉴。    A/D转换是单片机数据采集系统的重要组成部分,实时内核下A/D驱动程序的实现过程主取决于A/D转换器的转换时间。本文首先比较和分析μC/OS-II下A/D采样数据的三种方法;其次介绍C8051F015单片机A/D模数转换器配置及特点;最后,在μC/OS-II内核移植到8位单片机C8051F015的基础上,介绍编写A/D驱动程序的一般思想和方法。1μC/OS-II实时内核下的A/D读方法实时内核下,驱动程序采用什么方法读取A/D采样数据是首先考虑的问题。许多因素将影响读取A/D,如A/D的转换时间、模拟值的转

3、换频率、输入通道数等,但最主要的取决于A/D的转换时间。典型的A/D转换典型的A/D转换电路由模拟多路复用器(MUX)、放大器和模数转换器(ADC)三部分组成。下面描述读取A/D的三种方法。图1所示的是第1种读取方法。假设A/D转换器的转换时间较慢(5ms以上)。应用程序调用图1所示的驱动程序,并传递要读取的通道。驱动程序通过MUX选择要读取的模拟通道(①)开始读。有,延时几μs以便使信号通过MUX传递,并之稳定下来。接着,ADC被触发开始转换(②)。然后驱动程序延时一段时间以完成转换(③_。延时时间必须比ADC转换时间长。最后驱动程序读取ADC转换结果(④)。并将转换结果返回到应

4、用程序(⑤)。图2所示的是第2种读取方法。当模拟转换完成后,ADC产生的个中断信号。若ADC转换完成,ISR给信号量发一个信号(⑤),通知驱动程序,ADC已经完成转换。如果ADC在规定的时限内没有完成转换。信号量超过(③),则驱动程序不再等待下去。驱动程序和中断服务子程序(ISR)的伪代码如下:ADRd(ChannelNumber){选择要读取的模拟输入通道;等待AMUX输出稳定;启动ADC转换;等待来自ADC转换结束中断产生的信号量;if(超时){*eer=信号错误;return;}else{读取ADC转换结果并将其返回到应用程序;}}ADCoversionCompleteISR

5、{保存全部CPU寄存器;/*将CPU的PSW、ACC、B、DPL、DPH及Rn入栈*/通知内核进入ISR(调用OSIntEnter()或OSIntNesting直接加1);发送ADC转换完成信号;/*利用μC/OS-II内核的OSSemPost()*/通知内核退出ISR(调用OSIntExit());恢复所有CPU寄存器;/*将CPU的PSW、ACC、B、DPL、DPH及Rn出栈*/执行中断返回指令(即RETI);}在这种方法里,要求ISR执行时间与调用等待信号的时间之和为A/D转换时间。如果A/D转换时间小于处理中断时间与等待信号所需的时间之和,则可以用第三种方法。如图3所示,前

6、两步(①②同以上两种方法)结束后,驱动程序接着在一个软件循环中等待(③)ADC直到完成转换。在循环等待时,驱动程序检测ADC的状态(BUSY)信号。如果等待时间超过设定的定时值(软件定时),则结束等待循环(循环等超时)。如果在循环等待中,检测到ADC发出转换结束的信号(BUSY)时,驱动程序读取ADC转换结果(④)并将结果返回到应用程序(⑤)。驱动程序伪代码如下:ADRd(ChannelNumber){选择要读取的模拟输入通道;等待AMUX输出稳定;启动ADC转换;启动超时定时器;while(ADCBusy&Counter0);/*循环检测*/if(Counter==0){*err

7、=信号错误;return;}else{读取ADC转换结果并将其返回到应用程序;}}A、D转换速度快,这种驱动程序的实现是最好的。2C8051F015单片机的A/D转换器2.1C8051C015单片机C8051C015的美国Cygnal公司新推出的高速SOC型C8051Fxxx系列单片机。它的内核CIP-51与MCS-51的指令集完全兼容,CIP-51的系统时钟频率在0~25MHz。C8051Fxxx系列单片机采用流水线结构,与标准的8051相比,指令执行速度有很大的提

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。