主題:ERR100定時問題 共有43108人關注過本帖 |
---|
ahtest |
1樓 |
ERR100定時問題 Post By:2004-12-3 18:23:00 [只看該作者]
你好!請問:在ERR100中,要設置一個1秒間隔的定時器中斷,該如何做?是用int SetTMR2( unsigned Divider )嗎?Divider該設多少?又:tmr2的中斷irq11和定時中斷0x1c有何區別?各自該如何利用?
   最好請回復至我的郵zyb@ahagri.com。謝謝 |
|
單帖管理 | 引用 | 回復 |
x10 |
2樓 |
Post By:2004-12-3 19:51:00 [只看該作者]
在ETR100中,Timer2為16位計數器,輸入時鐘為1MHz,一般用于產生幾ms至50ms的定時中斷,對需要長的定時,一般采用加載int 1Ch的方法,系統定時中斷將調用int 1Ch,所以其時間間隔約為55ms = 1/18.2,即每秒中斷次數為18.2次。通常采用int 1Ch計數產生秒級或更長時間間隔的事件。
|
|
單帖管理 | 引用 | 回復 |
ahtest |
3樓 |
Post By:2004-12-4 12:39:00 [只看該作者]
謝謝!用int 1Ch無法產生1秒的定時?如何做,請提示。
|
|
單帖管理 | 引用 | 回復 |
zhl |
4樓 |
Post By:2004-12-4 15:21:00 [只看該作者]
可getvect(..)及setvect(..)來安裝中斷0x1c,設置中斷0x1C的中斷服務程序。每55ms中斷一次,執行該中斷服務程序,比如將存儲器變量計數值++,通過管理其中存儲器變量來達到定時的目的。
|
|
單帖管理 | 引用 | 回復 |
ahtest |
5樓 |
Post By:2004-12-4 17:48:00 [只看該作者]
因為是每55ms中斷一次,無法通過“變量計數值++”到1000ms(1秒),有什么方法?謝謝!
|
|
單帖管理 | 引用 | 回復 |
x10 |
6樓 |
Post By:2004-12-5 15:17:00 [只看該作者]
如果要準確的1000ms,就使用Timer2,設置分頻值N=50000對應50ms,然后在Timer2_ISR中計數得到1000ms的事件。
|
|
單帖管理 | 引用 | 回復 |
ahtest |
7樓 |
Post By:2004-12-7 18:38:00 [只看該作者]
謝謝!是否可以用Timer0,對系統有無影響。另外,能否提供匯編的級調用: int 0x15 的說明。
|
|
單帖管理 | 引用 | 回復 |
x10 |
8樓 |
Post By:2004-12-7 21:55:00 [只看該作者]
禁止對Timer0進行任何設置,Timer0是系統定時器,其定時中斷將調用int 1Ch。在x86中,在任何C/C++代碼中都可插入匯編。對int 0x15的調用已包括在ETR100.CPP中,其定義在手冊中有說明。
|
|
單帖管理 | 引用 | 回復 |
ahtest |
9樓 |
Post By:2004-12-8 17:27:00 [只看該作者]
謝謝!也看到了,但是里面的內容不全,也不系統,所以想從你那得到一個全面的說明。
|
|
單帖管理 | 引用 | 回復 |
ahtest |
10樓 |
Post By:2004-12-8 17:33:00 [只看該作者]
還有一個關于定時的問題,接前天你說的問題,如果使用Timer2,而且設置分頻值N=50000(50ms),這就限制我的Timer2_ISR程序最大只有50ms的處理時間。正好想順便問一下,你能告訴我平均每秒大概能執行多少條指令(不同指令時間不同,我想平均估計你們知道)。
|
|
單帖管理 | 引用 | 回復 |
ahtest |
11樓 |
Post By:2004-12-9 15:52:00 [只看該作者]
還有一個關于定時的問題,接前天你說的問題,如果使用Timer2,而且設置分頻值N=50000(50ms),這就限制我的Timer2_ISR程序最大只有50ms的處理時間。正好想順便問一下,你能告訴我平均每秒大概能執行多少條指令(不同指令時間不同,我想平均估計你們知道)。
|
|
單帖管理 | 引用 | 回復 |
x10 |
12樓 |
Post By:2004-12-9 18:46:00 [只看該作者]
可以采用如下方法對你關心的代碼進行運行時間測試:
long start = clock( ); for( i1=0; i1<N; i1++ )           // N=1000也可以是其它數字 {    // 測試代碼 } long end = clock();  float T = (end-start)/CLK_TCK/N; 選擇N讓(end-start)>20以保證足夠的精度。 |
|
單帖管理 | 引用 | 回復 |