色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

中斷是什么 如何使用它們

454398 ? 來源:工程師吳畏 ? 2019-07-31 14:08 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

原理圖

中斷是什么 如何使用它們

什么是中斷?

微控制器編寫的簡單程序通常都可以在主函數內部完成,并且?guī)缀醪恍枰褂猛庠O。但是,大多數其他微控制器程序更復雜,需要大量代碼。當發(fā)生這種情況時,中斷會變得非常有用,但究竟什么是中斷?

想象一下,我們的微控制器需要同時做兩件事:準確跟蹤時間并使LED閃爍。我們的程序可以通過重置計時器,遞增計數器,然后等待計時器溢出來開始。完成后,我們的代碼可以使LED閃爍。雖然這有點完成工作,但是有兩個問題。 CPU花費大部分時間坐在延遲循環(huán)中,這浪費了CPU時間,并且LED的執(zhí)行時間很難計算。

那么,我們如何解決這個問題呢?我們可以在計時器上使用中斷!因此,我們不是在主代碼中遞增計數器,而是將代碼轉換為處理時序的中斷服務程序。

通常,微控制器將運行LED閃爍代碼,但是一旦定時器生成中斷請求,微控制器停止LED閃爍代碼,執(zhí)行定時器中斷服務程序,然后返回到LED閃爍代碼。這樣,LED閃爍代碼不會干擾我們的定時器代碼,它可以更準確(并且更容易)跟蹤時間。

AVR Core上的中斷

AVR有一個向量表,每個中斷源都跳轉到一個唯一的地址。這是非常有利的,因為我們不再需要執(zhí)行比較來查看觸發(fā)了哪個中斷,這可能需要一些時間。

下表顯示了Atmega168上可用的不同中斷以及它們跳轉到的地址。程序記憶。但是,在我們使用它們之前必須配置幾個中斷選項。

從ATmega168數據表中提取

表位置

Atmega168具有允許的引導加載程序區(qū)域它可以動態(tài)地重寫自己的程序存儲器,這對固件更新很有用。因此,ISR向量表將位于內存中很重要。如果表位于引導加載程序區(qū)域中,則在啟用引導加載程序時永遠不會更新(不推薦)。

因此,如果沒有引導加載程序,則應將向量表放在內存的底部(接近地址0x0000),但如果使用引導加載程序,則應將向量表移動到引導加載程序上方。這可以通過改變MCUCR寄存器中的幾個位來輕松完成。

如果IVSEL = 0,則ISR位于向量表的起始,否則ISR駐留在引導加載程序中。現在,將其保留為0,因為我們沒有使用引導加載程序

如果IVCE = 1,則執(zhí)行ISR切換。暫時保留為0

中斷啟用位

每個中斷源(I/O引腳,外設等)都有關聯(lián)中斷使能位。與PIC類似,STATUS寄存器中有一個全局中斷使能位,需要將其設置為允許中斷工作。要找出這些中斷標志所在的位置,需要參考數據手冊中的特定外設章節(jié)。

例如,我們將在定時器0上使用溢出中斷,所以如果我們看一下定時器0在章節(jié)中,我們發(fā)現中斷使能位位于TIMSK0寄存器(第89頁)中,稱為TOIE0。需要將此位設置為1才能觸發(fā)定時器溢出。該寄存器還有另外兩個中斷源,A匹配溢出和B匹配溢出,這對PWM功能很有用(將來會介紹)。

注意,設置我在SREG中的位不是使用SREG本身,而是使用函數sei();設置I位和cei();清除I位。

在WinAVR中編寫ISR

所以我們現在明白需要啟用中斷才能啟動,但我們如何使用C和WINAVR編譯器編寫?答案很簡單:我們使用特殊保留字ISR并傳遞中斷名稱參數來告訴編譯器哪個中斷函數處理。注意我們需要包含中斷頭文件,否則中斷函數將不起作用!

#include

ISR(TIMER0_OVF_vect)

{

// Interestingly, the AVR automatically clears interrupt flags.。。.unlike the PIC

// Put your code here

}

簡單閃爍示例

在這個例子中,ATmega168會使連接到PD0的LED頻繁閃爍,其中閃爍的速率受到控制通過定時器0但是,您可能會注意到主功能為空,并且LED在定時器溢出中斷服務程序(ISR)內閃爍。這意味著我們可以在while循環(huán)中放入我們想要的任何代碼,并且該代碼不會阻止中斷運行。

/*

* AVR Interrupt.c

*

* Created: 09/01/2018

* Author : RobinLaptop

*/

// These are really useful macros that help to get rid of unreadable bit masking code

#define setBit(reg, bit) (reg = reg | (1 《《 bit))

#define clearBit(reg, bit) (reg = reg & ~(1 《《 bit))

#define toggleBit(reg, bit) (reg = reg ^ (1 《《 bit))

#define clearFlag(reg, bit) (reg = reg | (1 《《 bit))

#include

#include

ISR(TIMER0_OVF_vect)

{

// Interestingly, the AVR automatically clears interrupt flags =) 。。..unlike the PIC =(

// Toggle the LED (PD0 , Pin 2)

toggleBit(PORTD, PD0);

}

int main(void)

{

// Initialize Registers

clearBit(TCCR0A, WGM00); // Configure WGM to be 0x00 for normal mode

clearBit(TCCR0A, WGM01);

clearBit(TCCR0B, WGM02);

setBit(TCCR0B, CS00); // Configure clock source to be clock io at 1024 pre-scale

clearBit(TCCR0B, CS01);

setBit(TCCR0B, CS02);

DDRD = 0xFF; // Make PORT D and output

sei(); // Enable interrupts

setBit(TIMSK0, TOIE0); // Enable the timer interrupt

while (1)

{

// Put any code you want here

// It should not affect the interrupt service routine!

}

}

結論

教程僅涵蓋單個中斷,即定時器0溢出中斷,但它清楚地表明中斷是非常強大。如果使用得當,您可以擁有一個系統(tǒng),它可以在信號到達時立即響應并暫停主代碼。這可以用來做很多事情,包括多任務處理,不同外圍設備的多重處理,以及創(chuàng)建實時代碼!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 中斷
    +關注

    關注

    5

    文章

    906

    瀏覽量

    42854
收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    CYT2B93CAE如何構建不產生中斷的FIFO?

    你好,我正在使用 CYT2B93CAE 使用設備配置器 5.3,我選擇將不匹配的 ID 存儲在 FIFO 0 中,問題是它正在生成中斷,而對于不匹配的 ID,我不想中斷 CPU,只是將它們傳遞給 DMA 線。 如何構建不產生
    發(fā)表于 07-15 06:29

    第六章 外部中斷

    本章介紹W55MH32的IO口作為外部中斷輸入的使用。先闡述了NVIC(嵌套向量中斷控制器) 的結構、寄存器、優(yōu)先級及相關函數,再說明EXTI(外部中斷和事件控制器)的功能??驁D及IO口與
    的頭像 發(fā)表于 05-26 16:27 ?556次閱讀
    第六章 外部<b class='flag-5'>中斷</b>

    AS32X601驅動系列教程 PLIC_中斷應用詳解

    平臺中斷控制器(Platform Level Interrupt Controller,PLIC)是國科安芯AS32系列MCU芯片的中斷控制器,主要對中斷源進行采樣,優(yōu)先級仲裁和分發(fā)。各外設
    的頭像 發(fā)表于 05-23 17:10 ?225次閱讀
    AS32X601驅動系列教程 PLIC_<b class='flag-5'>中斷</b>應用詳解

    如何在CYPD7299中禁用和啟用SWD,并在需要時啟用它?

    基本上,我的要求是在 CYPD7299 中禁用 SWD,并在需要時啟用它。 僅供參考,我們正在通過 LIN 使用固件更新。 有人可以指導如何實現這一點嗎?
    發(fā)表于 05-19 08:02

    單片機中斷技術詳解

    在現代電子設備中,單片機作為控制核心發(fā)揮著舉足輕重的作用。而在其高效運作的背后,中斷機制是推動單片機實現實時響應與高效執(zhí)行的關鍵因素。本文將深入探討單片機中的中斷概念、中斷系統(tǒng)的結構、中斷
    的頭像 發(fā)表于 02-02 15:57 ?988次閱讀

    串口中斷是內部中斷還是外部中斷,串口中斷是怎么觸發(fā)的

    串口中斷通常被視為外部中斷。雖然串口控制器(如USART、UART等)可能集成在微控制器或處理器的內部,但從中斷的角度來看,串口中斷是由處理器外部的通信事件觸發(fā)的。這些事件包括數據的接
    的頭像 發(fā)表于 01-29 15:03 ?1847次閱讀

    串口中斷需要清除標志位嗎,串口中斷標志位會自動清除嗎

    在電子通信領域,串口中斷作為一種重要的通信機制,廣泛應用于各種嵌入式系統(tǒng)和計算機設備中。串口中斷標志位的管理,尤其是是否需要手動清除以及是否會自動清除,是理解和實現串口通信的關鍵環(huán)節(jié)。
    的頭像 發(fā)表于 01-29 14:59 ?1948次閱讀

    利用Minitab應對供應鏈中斷問題

    供應鏈中斷是不可避免的,但積極的措施和數據驅動的戰(zhàn)略可以減輕其影響。Minitab全面的數據分析和問題解決工具使組織能夠分析、優(yōu)化和調整其供應鏈,以應對不可預見的挑戰(zhàn),確保面對中斷時的彈性和連續(xù)性。
    的頭像 發(fā)表于 01-02 17:16 ?475次閱讀

    ADS1299fe自帶濾波功能嗎?用它測得EEG信號還得做濾波處理嗎?

    ADS1299fe這個板子 自帶濾波功能嗎?用它測得EEG信號還得做濾波處理嗎?急急急。
    發(fā)表于 12-26 06:59

    stm32 GPIO中斷配置教程

    在嵌入式開發(fā)中,STM32微控制器因其高性能和豐富的外設而廣受歡迎。GPIO(通用輸入/輸出)中斷是STM32微控制器中常用的功能之一,它允許開發(fā)者在特定引腳上檢測到外部信號變化時快速響應。 1.
    的頭像 發(fā)表于 11-19 15:53 ?3505次閱讀

    LRA致動器:如何移動它們

    電子發(fā)燒友網站提供《LRA致動器:如何移動它們.pdf》資料免費下載
    發(fā)表于 10-26 09:18 ?0次下載
    LRA致動器:如何移動<b class='flag-5'>它們</b>

    單片機有哪些中斷類型

    單片機中斷是指在單片機執(zhí)行程序的過程中,當外部設備或內部條件發(fā)生某個特定事件時,能夠暫停當前正在執(zhí)行的程序,轉而去執(zhí)行一個特定的服務程序(稱為中斷服務程序或中斷處理程序),處理該事件,之后再返回到被
    的頭像 發(fā)表于 10-17 18:12 ?2432次閱讀

    單片機的中斷機制

    單片機的中斷機制是一種重要的處理方式,它允許單片機在執(zhí)行主程序的過程中,能夠暫停當前任務,轉而處理外部或內部緊急事件。這種機制極大地提高了系統(tǒng)的響應速度和處理能力,使得單片機在各種應用領域中得到廣泛應用。以下是對單片機中斷機制的詳細探討。
    的頭像 發(fā)表于 10-17 18:03 ?2008次閱讀

    freertos中斷優(yōu)先級在哪設置

    中斷優(yōu)先級之前,我們需要理解中斷優(yōu)先級的概念。在嵌入式系統(tǒng)中,中斷是硬件或軟件事件,它們可以打斷CPU的當前執(zhí)行流程,讓CPU去處理更緊急的任務。
    的頭像 發(fā)表于 09-02 14:17 ?1609次閱讀

    stm32怎樣觸發(fā)軟件中斷

    了解STM32中斷系統(tǒng) STM32微控制器具有豐富的中斷系統(tǒng),包括NVIC(嵌套向量中斷控制器)和SYSTICK定時器。NVIC可以處理多達240個中斷源,包括外部
    的頭像 發(fā)表于 09-02 09:32 ?1960次閱讀
    主站蜘蛛池模板: 青春禁区动漫免费观看 | 国产高清美女一级毛片久久 | 甜宠溺H宝贝嗯撞PLAY啊 | 免费在线a | 国产精品成人自拍 | 一区三区三区不卡 | 中文字幕亚洲无线码一区 | 国产97视频在线观看 | 在线欧美精品一区二区三区 | 黄瓜视频苹果直接安装 | 国产99对白在线播放 | 国产色婷婷亚洲99精品 | 秀婷程仪公欲息肉婷在线观看 | 嗯呐啊唔高H兽交 | 19十主播福利视频 | 国产乱码一区二区三区 | 国产电影无码午夜在线播放 | 2019久久视频这里有精品15 | 秋霞网韩国理伦片免费看 | 麻豆免费观看高清完整视频在线 | 亚洲视频中文字幕 | www.狠狠色| 国产午夜精品一区二区理论影院 | 热巴两次用约老师屁股发底线球 | 囯产精品麻豆巨作久久 | 中文字幕亚洲男人的天堂网络 | 91国内精品久久久久免费影院 | 国产树林野战在线播放 | 老阿姨才是最有味的一区二区 | 99精品久久精品一区二区 | JK白丝校花爽到娇喘视频 | 二级毛片在线观看 | 精品国产品国语在线不卡 | 天天插天天射天天干 | 小p孩玩成年女性啪啪资源 小777论坛 | 一攻多受h嗯啊巨肉bl巨污 | 北条麻妃夫の友人196 | 老司机深夜福利ae 入口网站 | 国产在线视精品在亚洲 | 无码人妻精品国产婷婷 | 成人毛片一区二区三区 |

    電子發(fā)燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品