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

基于Web的MCF5249数据采集系统的设计


fullscate

其中,Vi为ADC的输入电压;Vfullscate为满量程输入电压;

X为ADC输出的数字量;

n为ADC的位数。

A/D转换的结果在中断处理程序中读取。读取一次转换的程序代码如下:

Volatile u

nsigned shortint m;

m=*(volatile unsigned short int *)(MBAR2_ADDR+AD_VALUE);

通常,A/D转换需要连续采样。采样结果应存放在一个多访问循环队列MACQ(Multiple Access Circular Queue)中。

    MACQ是一个定长有序的数据结构。源进程(生产者,ADC采样程序)将数据存入MACQ,一旦初始化,MACQ总是满的。当有新的数据被存入(PUT)MACQ,旧数据即被丢弃(如图3)。应用进程(消费者)可以从MACQ中读取任何数据。读功能是非破坏性的,即读操作不会改变MACQ。

在uClinux中,A/D转换中断程序的编写方法是将A/D转换器作为一个字符设备来处理。中断程序是在linux/drivers/char目录下编写,其结构如下:*File:m5249_adirq.c

#include<linux/interrupt.h>

#include<asm/irq.h>

#define ADC_IRQ(128+63)//定义中断号

#define MBAR2_ADDR 0x8000000

#define AD_CONFIG 0x402

#define AD_VALUE 0x406

/*定义中断处理函数*/

void adirq_interrupt(int irq,void *d,struct pt_regs *regs){

在此读取A/D转换的值并存入队列中。

}

/*设备初始化函数*/

int adirq_init(){

int result;

unsigned short adc_irq;

adc_irq=ADC_IRQ;

result=request_irq(adc_irq,&adirq_interrupt,SA_INTERRUPT,5249_adirq NULL);//注册中断

if(result= = -1)

{printk(“Can't get assigned %d”adc_irq);

return result;}

return 0;

}

中断服务程序的添加方法如下

《基于Web的MCF5249数据采集系统的设计(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/150924.html

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