基于ISA总线与KH-9300的数据采集系统软件设计

发布者:advancement3最新更新时间:2011-09-14 关键字:ISA总线  KH-9300  数据采集 手机看文章 扫描二维码
随时随地手机看文章

1 引言
    该数据采集系统采用硬中断方式,通过对KH-9300板卡上的8254定时器和8259中断控制器编程定时触发中断并对外部脉冲计数,设计中每隔1 s采集1次数据,数据采集卡第0和1号通道采用串行方式并使用板卡上的内部时钟进行计时,第2、3、4、5号通道输人外部计数脉冲计数。所有通道采用内部门控信号。当串行的第0~1通道计数满时,就向板卡上的8259中断控制器的IN1引脚发出中断指令。通过8259中断控制器向计算机内的8259A的中断引脚(这里设计为第5号中断引脚)发出中断指令。CPU响应中断请求,执行中断程序,对板卡上第2、3、4、5号通道进行数据采集,并把采集后的数据写入文件。

2 板卡及8254定时、计数常数的设置
    时钟跳线的设置:0号通道选内部时钟,0和1两通道级联,2~5号通道接外部脉冲,选外部时钟。门控跳线设置为所有通道都选内部门控;基地址设置为280H;中断号设置为INT5(中断向量号为13);内部时钟频率设置为2 MHz。
    (1)定时常数的计算 定时系数=要求定时的时间/时钟脉冲的周期。若定时的时间为1 s,内部时钟频率为2 MHz。则时钟脉冲的周期为1 s/2 MHz=0.5μs,定时系数为1s/0.5 μs=2×106=2 000 000。由于8254定时计数器6个通道为16位减计数器,每个通道计数值最大为216-1=65 535<2 000 000。所以必须采用2个通道计时,设计中将第0通道和第1通道串联。由2×106=1 000×2×103,则定时系数:第0通道为2 000,第1通道为1 000。
    (2)计数通道的初始化 计数通道常数设置为最大值:FFFFH。最大计数频率为65 535 Hz/s。
    (3)计数累计脉冲量计算 计数累计脉冲量=FFFFH-计数器本次读数。

3 用Turbo C编写中断服务程序的方法
    C语言中断服务程序可由3部分实现。即编写中断服务程序、安装中断服务程序、激活中断服务程序。[page]

    (1)编写中断服务程序由于产生中断时,必须保留被中断程序中断时的一些现场数据,即保存断点,这些值都在寄存器中,以便恢复中断时使这些值复原。以继续执行原来被中断的程序。 Turbo C为此提供一种新的函数类型:inter-rupt,它将保存由该类型函数所指寄存器的值,而在退出该函数时,再复原这些寄存器的值,因而用户的中断服务程序必须定义成该类型的函数,如中断服务程序名为myp,则可将这个函数说明为:
    Void interrupt myp(unsigned bp,unsigned di,unsigned si,unsigned ds,unsigned es,unsigned dx,unsigned cx,unsignedbx,unsigned ax,unsiged ip,unsigned cs,unsigned flags)
    小模式下程序只有1段,在中断服务程序中用户可像用无符号整数变量一样使用这些寄存器。若中断服务程序中不使用上述寄存器,则可不写这些寄存器参数,而写为:

  
    对于硬件中断,则在中断服务程序结束前要将中断结束命令字送至系统的中断控制寄存器,其端口地址为0x20,中断结束命令字也为0x20,即outportb(0x20,0x20)。
    在中断服务程序中,若不允许别的优先级较高的中断打断它,则要禁止中断,可用函数disable()来关闭中断。若允许中断,则可用开中断函数enable()来开启中断。
    (2)安装中断服务程序定义中断服务程序后,还需将这个函数的人口地址填人中断向量表中,以便产生中断时程序能转入中断服务程序去执行。为防止正在改写中断向量表时,又产生别的中断而导致程序混乱,可先关闭中断,待改写完成后,再开启中断。

  
    其中faddr是中断服务程序的入口地址,其函数名代表入口地址,而inum表示中断类型号,setvect()函数设置中断向量,上述定义的install()函数将完成把中断服务程序入口地址填入中断向量inum中。
    (3)中断服务程序的激活对于硬件中断,在相应的中断请求线(IRQi,i=0,1,2,…,7)产生一个由低到高的中断请求电平,这个过程必需由接口电路来实现,这个电平可用程序控制实现,如发命令outportb(端口地址,命令)。然后程序等待中断,当中断产生时,便去执行中断。
    (4)恢复被修改的中断向量为在主程序结束后,恢复原来的中断向量以指向原中断服务程序,在主程序开始时,存下原中断向量的内容,用getvect()实现,如j=(char*)getvect(0x1c),这样指针变量中将是0xlc中断程序的入口地址,当主程序结束时,可恢复原来的中断服务入口地址,可用setvect(0x1c,i),也可用install()函数再次安装。

4 程序设计
4.1 程序说明
    程序主要分为主程序和中断处理子程序2部分。其中主要程序是采用 I/O接口的输入输出函数进行初始化。包括设置KH-9300定时计数器8254和中断控制器8259的工作方式、初值、开中断、触发方式,对计算机的 8259开中断等。在主程序的最后把采集的通道数据写入文件。而中断处理子程序是由CPU在每次接到IRQ5中断请求信号后立即执行,主要作用是把KH- 9300卡的第2、3、4、5号通道的计数值采集到程序的变量中。主程序和中断处理子的程序流程分别如图1、图2所示。

4.2 编程注意事项
    (1)不要用任何DOS功能调用,避免DOS重入。尽量避免使用与屏幕相关、检查状态、读键盘及任何磁盘I/O子程序:避免使用浮点(实数)运算。中断服务程序中所调用函数尽量是BIOS级库函数;(2)中断程序执行的时间应尽可能的短。若 ISR中消耗时间过长,在完成一次运行前有可能被再次调用,导致系统被挂起。(3)控制变量可以是全局变量,也可通过寄存器变量传递给interrupt 函数;(4)若实时控制系统对中断响应速度要求较高,可采用嵌入汇编技术。

[page]

4.3 程序调试结果
    图3为调试结果。图3中每1行后4个数据为每1 s所采集的4通道数据,第1列是第几次采集,即第几秒采集,后4列是第2、3、4、5通道所采集的数据。因此采集的数据具有较高稳定性。

5 结束语
    从程序调试数据可看出,采集到的数据具有很高的稳定性。该系统可方便组成连续监测系统或其他需要记录脉冲的系统。同时利用Turbo C可方便的控制其端口和硬件中断。

 

 

关键字:ISA总线  KH-9300  数据采集 引用地址:基于ISA总线与KH-9300的数据采集系统软件设计

上一篇:DSP和CAN总线在直流电机测试系统中的应用
下一篇:CAN总线在发动机测试中的应用

推荐阅读最新更新时间:2024-03-30 22:18

多模拟通道数据采集,平均法选择需谨慎
随着电子系统中传 感器和信号源的快速增加,使得设备设计师们可以在系统MCU或传感器融合协处理器中加入更多的模拟信号通道。尤其是在日益发展的 小型物联网领域 中更是如此。 信号平均法 是一项常用于此类数据采集系统的技术,可以增强数值结果的可用分辨率并抑制多种噪声。虽然过滤方式简单,但其整体效果要取决于所使用的平均法。本文将对 传统的 序列平均法和最新的交叉平均法 进行比较。 许多现代的混合信号MCU和片上系统都直接将平均法加入到模拟-数字转换器硬件中。这大大减少了MCU需要完成的处理量,简化代码编写,缩短处理器需要在高功耗模式中的运行时间。 尽管多种信号与设备之间实现连接的模拟输入多路复用器已十分普遍,但大部分混合
[测试测量]
多模拟通道<font color='red'>数据采集</font>,平均法选择需谨慎
基于CAN总线的车辆虚拟仪表数据采集系统设计
  1 引言   现在总线技术有很多种。从成本上讲,RS-232/485的成本都比CAN低;速度上讲,工业以太网等也都不错。为什么唯独CAN在汽车电子中得到亲睐?   从成本上来说,CAN比UART、RS-232/485高,但比以太网低;从实时性来说:CAN的实时性比UART和以太网高,为了保证安全,车用通信协议都是按周期性主动发送,不论是CAN还是LIN,对实时性要求高的消息其发送周期都小于10ms(每辆车都有好几条这样的消息),发动机、ABS和变速器都有几条这样的消息;从可靠性来说,CAN有一系列事故安全措施,这是UART和以太网都不具备的,多点冗余也是UART(点对点传输)和工业以太网(数据传输距离短)难于实现的,所
[嵌入式]
基于USB和DSP的数据采集系统的设计
介绍了一种利用USB2.0的高速传输特性,基于USB和DSP的数据采集系统。详细论述了系统的总体结构、部分硬件设计,并简要叙述了相应固件程序的实现。          测量仪器一般由数据采集、数据分析和显示三部分组成,而数据分析和显示可以由PC机的软件来完成,因此只要额外提供一定的数据采集硬件就可以和PC机组成测量仪器。这种基于PC机的测量仪器被称为虚拟仪器 。而在一些数据量比较大、采集时间比较长的场合,就需要采用高速的数据传输通道。基于虚拟仪器的思想和高速传输通道的要求,设计了一种基于DSP和USB2.0的高速数据传输接口。         1 数据采集系统硬件        数据采集系统由A/D数据采集单元、USB从接口
[嵌入式]
水表数据采集无线传输管理系统的设计与实现
1 引言 生产型企业主要生产用水是指直接用于工业生产的水。对水处理系统采用实时监控系统,能够及时细致地了解用水量的变化,便于采取相应的措施,用户受到地理环境和工作内容的限制,对有线网络、有线传输的布线工程具有极大的不便。这时,采用无线监控可以摆脱线缆的束缚,具有安装周期短、维护 方便、扩容能力强,迅速收回成本的优点。本文介绍的水表数据采集传输管理系统是根据某生产型企业的室外距离较远及生产办公环境已较完善的现状而设计,实现数据的实时无线传输,并在中控室对数据进行存储、分析和管理。 本系统由电磁流量计采集现场水流量,采集点共有50处,厂 区长2km,宽1km,采集点分布在厂区的各个用水地方。要求所有电磁流量计的信号以无线传输的方式
[测试测量]
水表<font color='red'>数据采集</font>无线传输管理系统的设计与实现
致远电子数据采集记录仪,保证温度测量的准确性
使用热电偶测量温度最常见的测温方法,但是由于热电偶冷端温度不为0℃,直接测量往往会造成较大误差。致远电子数据采集记录仪可以进行热电偶冷端温度补偿,保证温度测量的准确性! 一、热电偶为什么要进行冷端补偿 热电偶测量温度时要求其冷端(测量端为热端,通过引线与测量电路连接的端称为冷端)的温度保持不变,其热电势大小才与测量温度呈一定的比例关系。 理论上, 热电偶 是冷端以0℃为标准进行测量的。然而,通常测量时仪表是处于 室温 之下的,由于冷端不为0℃,造成了热电势差减小,使测量不准,出现误差。为减少这类测试误差,在冷端采取一定措施补偿由于冷端温度变化造成的影响称为热电偶的冷端补偿。 二、冷端补偿原理 热电偶
[测试测量]
致远电子<font color='red'>数据采集</font>记录仪,保证温度测量的准确性
基于PROFIBUS总线的涡轮增压器生产线数据采集系统介绍
   1 引言   现场总线是信息技术、网络技术的发展在控制领域的体现,是自动化技术发展的热点之一。因其具有数字化、开放性、分散性以及对现场环境的适应性等特点而获得了非常广泛的应用。目前,已逐渐成熟并对工业自动化进程形成影响的主要有PROFIBUS,HART,LONWORKS,FF等等。其中 PROFIBUS总线是最为流行的现场总线技术之一,其产品广泛应用于工业、电力、能源、交通等自动化领域。PROFIBUS是德国于90年代初制订的国家工业现场总线协议标准,代号DIN19245。它是一种国际化的开放式现场总线标准,即EN50170欧洲现场总线标准。该标准为供应商和用户的投资提供了最佳的保护并确保供应商的独立自主性。PROFI
[嵌入式]
基于DAS AD7606的可扩展多通道同步采样数据采集系统(DAS)的布局
  在电力线路测量和保护系统中,需要对多相输配电网络的大量电流和电压通道进行同步采样。这些应用中,通道数量从6个到64个以上不等。AD76068通道数据采集系统(DAS)集成16位双极性同步采样SAR ADC和片内过压保护功能,可大大简化信号调理电路,并减少器件数量、电路板面积和测量保护板的成本。高集成度使得每个AD7606只需9个低值陶瓷去耦电容就能工作。   在测量和保护系统中,为了保持多相电力线网络的电流和电压通道之间的相位信息,必须具备同步采样能力。AD7606具有宽动态范围,是捕获欠压/欠流和过压/过流状况的理想器件。输入电压范围可以通过引脚编程设置为±5 V或±10 V。   此电路笔记详细介绍针对采用多个AD76
[嵌入式]
基于DAS AD7606的可扩展多通道同步采样<font color='red'>数据采集</font>系统(DAS)的布局
一个单片机串行数据采集/传输模块的设计
在微机测控系统中,经常要用到A/D转换。常用的方法是扩展一块或多块A/D采集卡。当模拟量较少或是温度、压力等缓变信号场合,采用总线型A/D卡并不是最合适、最经济的方案。这里介绍一种以GNS97C2051单片机为核心,采用TLC2543 12位串行A/D转换器构成的采样模块,该模块的采样数据由单片机串口经电平转换后送到上位机(IBM PC兼容机)的串口COM1或COM2,形成一种串行数据采集串行数据传输的方式。经实践调试证实:该模块功耗低、采样精度高、可靠性好、接口简便,有一定实用价值。 1 主要器件介绍 1.1 TLC2543串行A/D转换器 模块采用TI公司的TLC2543 12位串
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新测试测量文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved