保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

μC/OS-II实时内核下的A/D驱动程序设计


摘要:详细分析在μC/OS-II实时内核下驱动程序读取A/D的三种方法;阐述C8051F015单片机的A/D转换器的配置、转换特点及其驱动程序读取A/D采用的方法;针对C8051F015单片机分析A/D驱动程序设计的方法和思想。这些方法和思想为在μC/OS-II下访问其它类型的A/D提供了很好的借鉴。

    关键词:μC/OS-II A/D 驱动程序 C8051F015

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

图2所示的是第2种读取方法。当模拟转换完成后,ADC产生的个中断信号。若ADC转换完成,ISR给信号量发一个信号(⑤),通知驱动程序,ADC已经完成转换。如果ADC在规定的时限内没有完成转换。信号量超过(③),则驱动程序不再等待下去。驱动程序和中断服务子程序(ISR)的伪代码如下:

ADRd(ChannelNumber)

{

选择要读取的模拟输入通道;

等待AMUX输出稳定;

启动ADC转换;

等待来自ADC转换结束中断产生的信号量;

if(超时){

*eer=信号错误;

return;

}else{

读取ADC转换结果并将其返回到应用程序;

}

}

    ADCoversion Complete ISR {

保存全部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出栈*/

《μC/OS-II实时内核下的A/D驱动程序设计》
本文链接地址:http://www.oyaya.net/fanwen/view/140536.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。