| 
  |||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe  | 
  
求助:這些任務(wù)怎樣才能合理安排??謝謝 | 
  
| 作者:wblovesea 欄目:單片機 | 
我現(xiàn)在做的項目有2路脈沖輸入,同時還要對2路串口(一個是模擬的)做輸入輸出處理,還有2路IIC,這些都要1S內(nèi)實時處理(1S循環(huán)一次),其中一路脈沖一個也不能少記 可是面對串口的相對較慢,應(yīng)該怎么辦呢 //////////////有兩點疑問:1:PIC怎樣實現(xiàn)中斷嵌套?可行嗎 2:串口通訊時可以被中斷打斷嗎? 謝謝啦~  | 
  
| 2樓: | >>參與討論 | 
| 作者: 獨占一江秋 于 2007/4/16 16:45:00 發(fā)布:
         參照片選信號,與對方建立同步握手  | 
  |
| 3樓: | >>參與討論 | 
| 作者: xieyuanbin 于 2007/4/16 20:09:00 發(fā)布:
         這個需要知道你脈沖的最高頻率. 在1秒內(nèi),4M的時鐘可以將上述程序大概運行3K-4K次,理論上,可對1.5K-2K的脈沖進行采樣而不丟失,上面的前提是IIC,串口通訊全部用軟件編寫. PIC中斷嵌套是不可取的,因為現(xiàn)場無法妥善保護. 如果用軟件實行串口通訊是不可打斷的,硬件則無所謂,只要你來得及讀取數(shù)據(jù). 總的做法:使用定時中斷,每個定時中斷中處理:脈沖采樣,串口通訊1BIT,IIC通訊1BIT.這叫時分復(fù)用法.  | 
  |
| 4樓: | >>參與討論 | 
| 作者: wblovesea 于 2007/4/17 16:48:00 發(fā)布:
         首先謝謝xieyuanbin 你說的方法很好,我會仔細考慮的:) 另外我還有個問題想請教你:(就是關(guān)于2路IIC同時為中斷時,彼此會打亂對方的協(xié)議嗎) 是這樣的我外擴了RTC和NRAM,都是IIC的,我每1S都要循環(huán)一次上述程序 其中一路脈沖每來一次都要寫NRAM,而RTC每秒發(fā)一個脈沖,MCU就要去讀它的時間日期做歷史數(shù)據(jù).2路IIC,至少一路為中斷.如果正在執(zhí)行A路IIC,比如剛發(fā)了個START位正在判斷是不是要發(fā)數(shù)據(jù)了,這時B路的IIC中斷來了,再回來的時候還能正確執(zhí)行嗎? 謝謝  | 
  |
| 5樓: | >>參與討論 | 
| 作者: cscm007 于 2007/4/18 14:56:00 發(fā)布:
         探討! 方法1:比如計數(shù),另一路的1個脈沖(脈沖有固定時間)訪問一次的話,那個1S訪問一次的可以計算那個前一個訪問了幾次后,再啟動, 方法2:定兩個標志位(一位是1S一次的使能位,一位是1個脈沖一次的使能位),在隔一定時間(時間短點)掃描標志位一次,有的話就啟動訪問程序,沒的話就跳過! 串口通訊最好不要中段,除非這個發(fā)送的數(shù)據(jù)不關(guān)鍵.串口好像是異步通信吧!  | 
  |
| 6樓: | >>參與討論 | 
| 作者: xieyuanbin 于 2007/4/18 20:28:00 發(fā)布:
         不太明白. 就你的問題來說,IIC哪個是MASTER,哪個是SLAVER?難道你的MCU不是MASTER嗎? 對于IIC來說,波特率是由MASTER的時鐘脈沖決定的,時鐘如果暫停,通訊即暫停,時鐘恢復(fù)則通訊恢復(fù),所以你可以隨時停止一路而去處理另外的事情.  | 
  |
| 7樓: | >>參與討論 | 
| 作者: zhaoyu2005 于 2007/4/19 10:35:00 發(fā)布:
         pic的中斷現(xiàn)場保護能處理好就是麻煩點,要反復(fù)用SWAPF指令 還有pic的單片機堆棧太少,一般為8級,弄不好就會溢出,還是盡量不要中斷嵌套  | 
  |
| 8樓: | >>參與討論 | 
| 作者: wblovesea 于 2007/4/19 12:15:00 發(fā)布:
         謝謝大家 是這樣的,我的MCU是唯一的主控,從機為RTC和NRAM,二者都是I2C. RTC每一秒發(fā)一個中斷要求MCU讀它的時間,準備好寫入歷史存儲器, 我的脈沖測的是電機轉(zhuǎn)動頻率(寬度肯定不確定)然后每轉(zhuǎn)一圈我就要寫一次NRAM,更新.xieyuanbin說的可以中止脈沖,要是我傳了半個字節(jié)的話也可以暫時中止嗎? 另外,IIC主控初始化的時候,SM3~0和SSPADD應(yīng)寫入什么數(shù)值啊?(100K/B時吧)  | 
  |
| 9樓: | >>參與討論 | 
| 作者: 蘭天白云 于 2007/4/22 13:47:00 發(fā)布:
         有軟件IIC,也有硬IIC 你用硬的還是軟的?  | 
  |
| 10樓: | >>參與討論 | 
| 作者: xieyuanbin 于 2007/4/22 17:52:00 發(fā)布:
         顯然你用了硬件控制的IIC 但一般只有一個IIC端口,你另一個是什么? 對于IIC來說,你如果用軟件做的通訊,在MASTER那一邊,只要你起始位和停止位發(fā)送正確,即使你只傳送了半個字節(jié)然后暫停,后半個字節(jié)仍然可以在處理完別的任務(wù)后回來再處理。這對發(fā)送接收是都有效的。 如果是硬件,那么就不要管啦,單片機自己會處理,不用你多操心  | 
  |
| 11樓: | >>參與討論 | 
| 作者: wblovesea 于 2007/4/23 17:01:00 發(fā)布:
         謝謝大家,是這樣的 我用的是PIC16F877,硬件IIC,MCU分別接RTC和RAM 都是IIC總線,也就是說IIC通訊的時候隨便被打斷嗎? 還有我上貼的意思是說,關(guān)于主控方式下初始化時SSPADD不用寫點什么嗎 還有SM0~3有幾個工作方式,我不是很明白 謝謝  | 
  |
| 12樓: | >>參與討論 | 
| 作者: yewuyi 于 2007/4/24 8:55:00 發(fā)布:
         請仔細閱讀DATASHEET…… 不喜歡看英文,也可以查中文的,877相關(guān)的技術(shù)資料巨多……  | 
  |
  | 
    
 
  | 
  
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 | 
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號  |