主題:ETR232I擴展的AD數據采集電路 共有42742人關注過本帖 |
---|
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就可能有一次任務重調度,所以用示波器不能很好同步發出的脈沖。
|
|
單帖管理 | 引用 | 回復 |