日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開(kāi)發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開(kāi)發(fā)
培訓(xùn)信息
贊助商
學(xué)習(xí)AVR(十) 復(fù)位和中斷處理
學(xué)習(xí)AVR(十) 復(fù)位和中斷處理
 更新時(shí)間:2008-8-17 16:48:42  點(diǎn)擊數(shù):6
【字體: 字體顏色
AVR提供了幾種不同的中斷源。這些中斷和復(fù)位向量在程序存儲(chǔ)器空間內(nèi)都有自己?jiǎn)为?dú)的程序向量。所有中斷都被分配一個(gè)私有的使能位,要想使能某一中斷,就要向其使能位寫入邏輯1,而且要把狀態(tài)寄存器中的全局中斷使能位置1。

    程序存儲(chǔ)器空間最低的一些地址,被默認(rèn)定義為復(fù)位和中斷向量。完整的向量列表見(jiàn)“中斷”部分。該列表也決定了不同中斷的優(yōu)先級(jí)。地址越小,優(yōu)先級(jí)越高。RESET具有最高的優(yōu)先級(jí),其次是INT0——外部中斷請(qǐng)求0。詳細(xì)討論見(jiàn)“中斷”部分。

    當(dāng)某個(gè)中斷產(chǎn)生時(shí),全局中斷使能位I被清零,所有中斷都被禁止。用戶程序可以向I位寫入1,以實(shí)現(xiàn)中斷嵌套。所有已使能的中斷就可以中斷當(dāng)前的中斷程序。當(dāng)從中斷指令——RETI——的執(zhí)行返回時(shí),I位被自動(dòng)置位。

    基本上有兩種類型的中斷。第一種是由事件觸發(fā)的,把中斷標(biāo)志置位。對(duì)于這些中斷,程序計(jì)數(shù)器被引導(dǎo)到實(shí)際的中斷向量,以執(zhí)行中斷處理程序,同時(shí)硬件把相應(yīng)的中斷標(biāo)志清除。通過(guò)向要清除的標(biāo)志位位置寫一個(gè)邏輯1,也可以被清除中斷標(biāo)志。如果中斷使能位被清除后,相應(yīng)的中斷條件發(fā)生時(shí),中斷標(biāo)志將被設(shè)置,而后保持到中斷被使能為止,或者由軟件把標(biāo)志清除。類似地,如果在全局中斷使能位被清除后,一個(gè)或多個(gè)中斷條件產(chǎn)生時(shí),相應(yīng)的中斷標(biāo)志將被設(shè)置,并保持到全局中斷使能位被設(shè)置為止,然后按優(yōu)先級(jí)順序執(zhí)行。

    第二種中斷,只要中斷條件存在,就會(huì)被觸發(fā)。這些中斷沒(méi)有必要具有中斷標(biāo)志。如果中斷條件在中斷被使能前消失,那么中斷將不被觸發(fā)。

    當(dāng)AVR從一個(gè)中斷中退出時(shí),它一般會(huì)返回主程序,并且執(zhí)行再執(zhí)行一條指令后,才會(huì)響應(yīng)后續(xù)的中斷。

    注意,當(dāng)進(jìn)入中斷程序時(shí)狀態(tài)寄存器不會(huì)自動(dòng)保存,當(dāng)從中斷程序返回時(shí),它也不會(huì)自動(dòng)恢復(fù)。這必須由用戶軟件來(lái)完成。

    當(dāng)使用CLI指令禁能中斷時(shí),中斷將立即被禁能。當(dāng)CLI指令執(zhí)行后,將沒(méi)有中斷再被執(zhí)行,即使中斷在CLI執(zhí)行的同時(shí)發(fā)生。下例所示為怎樣使用CLI指令來(lái)避免在定時(shí)的EEPROM寫時(shí)序期間避免產(chǎn)生中斷。

 匯編代碼例子
  in      r16, SREG              ; 保存SREG值 
  cli            ; 在定時(shí)程序中禁能中斷
  sbi    EECR, EEMWE    ; 開(kāi)始寫入EEPROM
  sbi    EECR, EEWE
  out    SREG, R16            ; 恢復(fù)SREG值(I位)
C代碼例子
  char    cSREG;
  cSREG = SREG;     /* 保存SREG值*/ 
  /* 在定時(shí)程序中禁能中斷 */
  _CLI ();
  EECR  = (1<<EEMWE);
  EECR  = (1<<EEWE);        /* 開(kāi)始寫入EEPROM */
  SREG  =  cSREG;                /* 恢復(fù)SREG值(I位) */

當(dāng)使用SEI指令來(lái)使能中斷時(shí),緊跟在SEI后面的指令將在任何后續(xù)的中斷前被執(zhí)行,示例如下。

 匯編代碼例子
 sei     ; 置位全局中斷使能
 sleep ; 進(jìn)入休眠,等待中斷
 ; 注意:將在任意中斷前進(jìn)入休眠
 C代碼例子
   _SEI();         /* 置位全局中斷使能
   _SLEEP();  /* 進(jìn)入休眠,等待中斷 */
  /* 注意:將在任意中斷前進(jìn)入休眠 */

中斷響應(yīng)時(shí)間

    對(duì)于所有使能的AVR中斷,中斷執(zhí)行響應(yīng)最少為四個(gè)時(shí)鐘周期。在四個(gè)時(shí)鐘周期之后,實(shí)際中斷處理程序的向量地址被執(zhí)行。在這四個(gè)時(shí)鐘周期內(nèi),程序指針(PC)被壓入堆棧。該失量正常為一到中斷程序的跳轉(zhuǎn),并且該跳轉(zhuǎn)花費(fèi)三個(gè)時(shí)鐘周期。如果中斷發(fā)生在一個(gè)多周期指令的執(zhí)行期間,在中斷被響應(yīng)前,該指令要執(zhí)行完畢。如果當(dāng)MCU在休眠模式中有中斷產(chǎn)生,那么該中斷響應(yīng)時(shí)間要再增加四個(gè)時(shí)鐘周期。這是由于從選擇的睡眠模式中喚醒需要啟動(dòng)時(shí)間。

    從中斷處理程序返回需要四個(gè)時(shí)鐘周期。在這四個(gè)時(shí)鐘周期內(nèi),程序指針(兩個(gè)字節(jié))從堆棧中被彈出,堆棧指針加2,SREG的I位被置位。

  • 上一篇: 學(xué)習(xí)AVR(九) 指令執(zhí)行的時(shí)序
  • 下一篇: [轉(zhuǎn)載]一種高可靠MCU系統(tǒng)監(jiān)控方案
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1