主題:關(guān)于IRQ7中斷 共有37011人關(guān)注過本帖 |
---|
立搏得 |
1樓 |
關(guān)于IRQ7中斷 Post By:2006-1-16 11:22:00 [只看該作者]
我們用Etr100在寫IRQ7中斷服務(wù)程序的時(shí)候,老是一中斷就死機(jī),里面用到了gettime函數(shù),只要將gettime調(diào)用屏蔽,好象就不死了,但在主程序中未用該函數(shù)。
    為保證取得中斷時(shí)間的實(shí)時(shí)性,gettime又不能屏蔽,應(yīng)該如何解決呢,另外gettime取得的時(shí)間只能精確到0.01秒,能否有其他辦法使獲取的時(shí)間精度更高。     急求解答,謝謝! |
|
單帖管理 | 引用 | 回復(fù) |
x10 |
2樓 |
Post By:2006-1-16 17:16:00 [只看該作者]
在中斷程序中不能調(diào)用DOS的系統(tǒng)函數(shù),gettime()就是其中之一,否則會(huì)造成系統(tǒng)重入而死機(jī)。
想得到中斷時(shí)刻更精確的時(shí)間需要做以下工作: (1)讀取系統(tǒng)當(dāng)前tick值       disable( );      unsigned long currtick = (unsigned long)(0x0040006CL);      enable( );      每個(gè)tick = 54.9255ms (2)讀取系統(tǒng)timer0當(dāng)前值      unsigned int currcnt = ReadTimer0();  //在ETR100.H中有      每個(gè)計(jì)數(shù)值 = 0.875us 然后在主程序中再把上述值轉(zhuǎn)換成時(shí)間。 good luck! |
|
單帖管理 | 引用 | 回復(fù) |