主題:ETA101 AE101.c 共有44983人關(guān)注過本帖 |
---|
kchmn |
1樓 |
ETA101 AE101.c Post By:2005-12-7 14:28:00 [只看該作者]
在貴公司提供的ETA101板,在AE101.c程序main中有個命令為:
i=ac910_chk(); 請問ac910_chk()是什么程序,有什么作用?我沒有找到對應(yīng)的函數(shù)。 |
|
單帖管理 | 引用 | 回復(fù) |
zhl |
2樓 |
Post By:2005-12-7 18:20:00 [只看該作者]
我們提供的ETA101的測試程序是ETA101.CPP,請參看該文件。
|
|
單帖管理 | 引用 | 回復(fù) |
kchmn |
3樓 |
Post By:2005-12-8 12:12:00 [只看該作者]
我的光盤里沒有ETA101.cpp, 請發(fā)一個到我的郵箱。另外,RS232, 485的詮釋文件里沒有提到putinputdata 和getoutputdata, 可否補(bǔ)上.謝謝
|
|
單帖管理 | 引用 | 回復(fù) |
zhl |
4樓 |
Post By:2005-12-8 14:14:00 [只看該作者]
ETA101.cpp已發(fā)給你。232 485的驅(qū)動程序在我們提供的光盤上都有的。
|
|
單帖管理 | 引用 | 回復(fù) |
kchmn |
5樓 |
Post By:2005-12-8 16:57:00 [只看該作者]
收到,謝謝
|
|
單帖管理 | 引用 | 回復(fù) |
kchmn |
6樓 |
Post By:2005-12-9 17:49:00 [只看該作者]
在你們提供的光盤上的AE101.c文件,用到了library: graph.h,我查了書和程序,中間沒有g(shù)raph.h這個頭文件,也沒有_settestposition, _clearscreen等欲處理文件。只有個graphics.h,但是也沒有上述文件。 請問可否提供這個頭文件及相關(guān)文件?還有,就算祛除有關(guān)graph.h的命令,程序依然沒有辦法compile. ac910_chk() 等等文件都不存在。ETA101.cpp只是AD部分,有沒有完整的(包括speedtest,poll,dio等)可以直接用的頭文件和對應(yīng)cpp文件?
|
|
單帖管理 | 引用 | 回復(fù) |
zhl |
7樓 |
Post By:2005-12-9 17:59:00 [只看該作者]
ETA101.cpp提供的AD采樣部分,因為只有一個函數(shù),就都放在一起了。
IO的操作可通過直接讀寫端口地址來實現(xiàn)inportb( ) 、outportb( ),所以就沒提供專門的程序。 |
|
單帖管理 | 引用 | 回復(fù) |
kchmn |
8樓 |
Post By:2006-2-6 16:55:00 [只看該作者]
在用ETA101進(jìn)行數(shù)據(jù)轉(zhuǎn)換的時候,發(fā)現(xiàn)讀數(shù)錯誤。例如在選擇-5 -- +5的時候,在(-5,-3.5)返回值從0單調(diào)遞增到接近4000,但是在(-3.5, -2)又出現(xiàn)(2xx,3xxx)的單調(diào)變化。 總結(jié)的說,數(shù)據(jù)被分成了若干小段,每一段是0-4095的變化。請問是什么問題,我的程序如下:
#define BaseAddress 0x300 //range 0 1 2 for 5 10 +-5 respectively float GetADData(int ChIdx, int Range, char* dir) {    unsigned int  i1,i;    unsigned char ub1, ub2;    float         f1;    ub1 = (unsigned char)(ChIdx&0x0f);    ub2 = (unsigned char)(Range&0x03);    ub1 = ub1|(ub2<<5);    outp( BaseAddress, ub1 );      // set channel number and range    for(i1=0;i1<2;i1++)                //start ad,do conversion twice to wait stable.      inp(BaseAddress+1);      do{ i=inp(BaseAddress)&1;      }while(i!=0); //   for( i1=0; i1<10; i1++ );       // delay for a while (>6us) //   inportb( BaseAddress+1 );       // start AD convert    i1 = inpw( BaseAddress+2 ); //   f1 = 5.0 * (i1&0x0FFF-2048) / 2048.0;    f1=i1&0x0FFF;    if (dir==NULL) return f1;    return f1; } 我有2塊ETA101卡,都試過了,同樣的問題。 |
|
單帖管理 | 引用 | 回復(fù) |
yl |
9樓 |
Post By:2006-2-7 16:34:00 [只看該作者]
我們進(jìn)行了測試,讀數(shù)是沒有問題的。你的程序里面取數(shù)的部分可能是造成錯誤的原因。在ETA101的手冊上面有說明,讀出的16位數(shù)的后四位是無效的,因此應(yīng)該在讀數(shù)以后取高12位,而不是低12位。具體方法是將讀出的數(shù)據(jù)右移4位。如下:
.... unsigned int data; .... (這一部分是設(shè)置以及啟動轉(zhuǎn)換和判斷轉(zhuǎn)換結(jié)束的代碼) data = inport( BaseAddress+2 ); data = data>>4; .... |
|
單帖管理 | 引用 | 回復(fù) |