|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
這個中斷沖突如何處理 |
| 作者:leexiaowu 欄目:單片機 |
這個中斷沖突如何處理 程序功能 正反方向計數(shù)并通過串口發(fā)送出去 計數(shù)脈沖通過14腳輸入,通過P0.1口的輸入高 低電平判定正、反轉(zhuǎn)方向,每10ms讀一次計數(shù)器值將差值累加到基準上去‘ 現(xiàn)在的問題 通過串口有時候數(shù)據(jù)會突然增大或者減少 下一次發(fā)送的時候 又恢復正常 通過仿真觀察 在串口發(fā)送前的數(shù)據(jù)轉(zhuǎn)換是對 通過串口發(fā)送時 數(shù)據(jù)發(fā)生改變 有網(wǎng)友說是中斷沖突 現(xiàn)在把串口的優(yōu)先級定在最高 發(fā)送數(shù)據(jù)時 把所有的中斷關掉了 還是一樣的故障 那么該如何解決 謝謝 如 發(fā)送出的數(shù)據(jù)為 10000 500 11000 請各位指教 3x |
| 2樓: | >>參與討論 |
| 作者: freego 于 2005/4/7 20:02:00 發(fā)布:
“通過串口有時候數(shù)據(jù)會突然增大或者減少” 是值還是字節(jié)數(shù)?沒法看懂你的意思 |
|
| 3樓: | >>參與討論 |
| 作者: maychang 于 2005/4/7 20:16:00 發(fā)布:
考慮不同中斷發(fā)生時 是否將緩沖區(qū)中數(shù)據(jù)修改了。 |
|
| 4樓: | >>參與討論 |
| 作者: leexiaowu 于 2005/4/7 20:31:00 發(fā)布:
是值 數(shù)值發(fā)生變化 是值 數(shù)值發(fā)生變化 |
|
| 5樓: | >>參與討論 |
| 作者: leexiaowu 于 2005/4/7 20:37:00 發(fā)布:
處理過程 定時時間到 讀計數(shù)器值 設置標志位 主程序掃描到 標志位 將計數(shù)值存入變量中 轉(zhuǎn)化為字符串 發(fā)送出去 清除標志位 |
|
| 6樓: | >>參與討論 |
| 作者: leexiaowu 于 2005/4/7 21:16:00 發(fā)布:
一點縫也沒有 誰遇到過這樣的問題嗎? |
|
| 7樓: | >>參與討論 |
| 作者: leexiaowu 于 2005/4/7 21:48:00 發(fā)布:
今天晚上無法入眠 今天晚上無法入眠 這個東西好象就這里有問題 已經(jīng)折騰我?guī)滋炝?br>誰知道的請指點一條光明大道 下班了 88 |
|
| 8樓: | >>參與討論 |
| 作者: xwj 于 2005/4/8 8:50:00 發(fā)布:
1、串口發(fā)送要檢查TI位,2、很可能是數(shù)據(jù)處理有BUG |
|
| 9樓: | >>參與討論 |
| 作者: leexiaowu 于 2005/4/8 9:12:00 發(fā)布:
問題解決了 可是不明白為什么會是這樣的 問題解決了 可是不明白為什么會是這樣的? 改過的程序 原來是字節(jié)的高4位是0就不發(fā)送 節(jié)約發(fā)送的時間 改動后 變成固定長度發(fā)送 這樣就好了 可我不明白為什么這樣就能成功的發(fā)送 而前面那種會突然增大和減少 for(i=0;i<20;i++) sbuff[i]=0; if(bytconsendf==21) bytconsendf=0; i=0; sbuff[0]='$'; //前進方向的 slen=1; iCntFT=iCntF; iCntBT=iCntB; tt1=((iCntFT>>16)&0x7fff); //高四個字節(jié) tt2=(iCntFT%65536ul)&0xffff; //低四個字節(jié) tt3=((iCntBT>>16)&0x7fff); //高四個字節(jié) tt4=(iCntBT%65536ul)&0xffff; //低四個字節(jié) // if(tt1!=0) (這里原來沒有注釋) // { (這里原來沒有注釋) i2s(tt1); for(i=0;i<=3;i++) { sbuff[slen+i]=t2[3-i]; } slen=slen+4; // } (這里原來沒有注釋) tt1=tt2 & 0xffff; i2s(tt1); for(i=0;i<=3;i++) { sbuff[slen+i]=t2[3-i]; } slen=slen+4; sbuff[slen]='@'; slen=slen+1; //后退方向的 // tt1=((iCntBT>>16)&0x7fff); //高四個字節(jié) // tt2=(iCntBT%65536ul)&0xffff; //低四個字節(jié) psend=(psend+1)%3; sendb[psend]=iCntBT; // if(tt3!=0) (這里原來沒有注釋)原來是字節(jié)的高4位是0就不發(fā)送 節(jié)約發(fā)送的時間 // { (這里原來沒有注釋) i2s(tt3); for(i=0;i<=3;i++) { sbuff[slen+i]=t2[3-i]; } slen=slen+4; // } (這里原來沒有注釋)原來是字節(jié)的高4位是0就不發(fā)送 節(jié)約發(fā)送的時間 i2s(tt4); for(i=0;i<=3;i++) { |
|
| 10樓: | >>參與討論 |
| 作者: leexiaowu 于 2005/4/8 9:17:00 發(fā)布:
可能是數(shù)據(jù)處理有BUG? to :xwj 每次發(fā)送兩個數(shù)據(jù) 所有的數(shù)據(jù)處理調(diào)用的是同一個處理的函數(shù) 所有如果有問題的 發(fā)送的數(shù)據(jù)應該都有問題 而不只有一個數(shù)據(jù)有問題 而另外一個數(shù)據(jù)沒有問題 所以我看不是數(shù)據(jù)處理這里有問題 現(xiàn)在問題解決了 可是不清楚為什么會是這樣的 |
|
| 11樓: | >>參與討論 |
| 作者: leexiaowu 于 2005/4/8 16:19:00 發(fā)布:
知道的說一說 知道的說一說 不勝感激 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |