主题:ETR232I扩展的AD数据采集电路 共有38137人关注过本帖 |
---|
ETR232I |
1楼 |
ETR232I扩展的AD数据采集电路 Post By:2006-2-24 12:34:00 [只看该作者]
我选用AD1674,先采用延时的方法已经正确的采集了数据。
现在我想用中断方式,把AD1674的STS反向后介入IRQ5。 请问中断服务程序和主程序怎么写? |
|
单帖管理 | 引用 | 回复 |
yl |
2楼 |
Post By:2006-2-27 9:37:00 [只看该作者]
对不起,因为我们负责这方面技术的工程师暂时不在公司,他明天回来以后将立即回答您的问题
|
|
单帖管理 | 引用 | 回复 |
ETR232I |
3楼 |
Post By:2006-2-27 21:40:00 [只看该作者]
我是参考ISRDEMO.cpp和isr.cpp写的程序
我在建立中断服务程序时,运行有问题,显示: Int6@2200:01B0 Int6@2200:01C8 Int6@22 Internal Stack Overflow System Halted! 这说明什么问题啊? 还有就是用硬件中断的方法是不是必须要有一个XCLK接入AD控制数据采集,Etr232i的扩展接口中没有分频的脉冲信号输出啊? |
|
单帖管理 | 引用 | 回复 |
zhl |
4楼 |
Post By:2006-2-28 13:48:00 [只看该作者]
1、请检查程序的编译模式,ETR232I上应选择80186指令。在“使用必读”文档中有介绍。
2、没有脉冲信号输出的,如果频率要求不是很高的话,可以通过对一个IO端口操作来模拟。 |
|
单帖管理 | 引用 | 回复 |
ETR232I |
5楼 |
Post By:2006-3-2 13:56:00 [只看该作者]
在硬件中断程序中不能有DOS调用,而我想用中断的方法,在中断服务程序中读取扩展电路AD的数据,用到了inportb()指令。主程序对数据进行处理。这么做不行吧?
而之前用延时的方法读取数据,AD1674的采样间隔是10微秒,在用outport(0x303,0)选通DA进行转换后,需要延时,用NB_Delay(),其最小单位是1ms。怎么办? |
|
单帖管理 | 引用 | 回复 |
zhl |
6楼 |
Post By:2006-3-2 16:26:00 [只看该作者]
1、这样做肯定是可以的,inportb()是直接读取的硬件端口数据,可以直接放到中断程序中。
2、 在ETR232I.CPP中增加一个us延时的函数,请更新。 |
|
单帖管理 | 引用 | 回复 |
ETR232I |
7楼 |
Post By:2006-3-4 18:48:00 [只看该作者]
我用ETR232I扩展AD采集三种传感器数据,用单步执行结果正确(依次是振动、温度、声音),但全速运行时结果却错位(变成声音、振动、温度),而且我在每次采集传感器之间加断点分别用F8和F9,情况和上面也是一样的,这是什么原因啊?
|
|
单帖管理 | 引用 | 回复 |
x10 |
8楼 |
Post By:2006-3-4 19:45:00 [只看该作者]
仔细查查流程,离成功只差半步了 :-)
|
|
单帖管理 | 引用 | 回复 |
rite2009 |
9楼 |
Post By:2009-4-13 17:09:00 [只看该作者]
我的怎么脉冲宽度是0.4uS?而且抖动很大。我用的9260.
我输出方波,用示波器查看。 代码如下: #include "stdafx.h" #include "em9260_isa_dio.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR    lpCmdLine, int       nCmdShow) {   // TODO: Place code here. PIO_OutEnable(EM9260_P5, 0xff); for(;;) { PIO_OutUchar(EM9260_P5, 0xff); PIO_OutUchar(EM9260_P5, 0x00);          } return 0; } |
|
单帖管理 | 引用 | 回复 |
x10 |
10楼 |
Post By:2009-4-13 17:47:00 [只看该作者]
wince是实时多任务操作系统,很多线程在并行运行,用上述代码不能保证脉冲宽度的一致。API函数对每一位GPIO均要扫描处理,所以需要一定的时间。CE每1ms就可能有一次任务重调度,所以用示波器不能很好同步发出的脉冲。
|
|
单帖管理 | 引用 | 回复 |