在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣在兩種不同模式下使用ATmega168上的Timer0

454398 ? 來源:工程師吳畏 ? 2019-07-31 17:02 ? 次閱讀

原理圖

怎樣在兩種不同模式下使用ATmega168上的Timer0

為什么要使用計(jì)時(shí)器?

大多數(shù)微控制器項(xiàng)目都需要使用精心計(jì)時(shí)的事件,包括多任務(wù),位沖擊協(xié)議,測(cè)量等等。這些定時(shí)事件可以通過在循環(huán)的每次迭代中使用遞增計(jì)數(shù)器來在軟件中完成。但是,這會(huì)浪費(fèi)可用于執(zhí)行其他操作的CPU資源,并且此類循環(huán)的使用可能難以正確計(jì)時(shí)。這就是定時(shí)器被引入微控制器的原因。現(xiàn)在它們非常普遍,很少找到?jīng)]有控制器的控制器。

大多數(shù)ATmega設(shè)備至少有一個(gè)定時(shí)器,ATmega168有三個(gè)定時(shí)器。因此,在本教程中,我們將看看定時(shí)器0以及在兩種不同模式下使用時(shí)如何將它用于定時(shí)事件:正常和比較。

定時(shí)器0

定時(shí)器0是一個(gè)通用的8位定時(shí)器,具有一些相當(dāng)強(qiáng)大的功能,包括比較模式,快速PWM生成和波形生成功能。雖然定時(shí)器0可能看起來很復(fù)雜,但實(shí)際上它使用起來相當(dāng)簡(jiǎn)單,只要你了解其工作原理背后的基礎(chǔ)知識(shí)。

定時(shí)器0外設(shè)布局

首先,AVR上的定時(shí)器幾乎與一個(gè)由鏈中的一堆觸發(fā)器組成的簡(jiǎn)單向上計(jì)數(shù)器相同。每次定時(shí)器計(jì)時(shí)時(shí),它都會(huì)遞增一個(gè)計(jì)數(shù)器寄存器,用于跟蹤當(dāng)前定時(shí)器的值。

當(dāng)定時(shí)器達(dá)到最大值然后計(jì)時(shí)時(shí)(timer0是一個(gè)8位計(jì)數(shù)器,這意味著它最大值為255),定時(shí)器回繞到0并設(shè)置定時(shí)器溢出位。此位可用于查看計(jì)數(shù)器是否已溢出,并且在確定特定代碼段是否已停止或未響應(yīng)的情況下非常有用。

定時(shí)器通??梢詠碜圆煌脑矗▋?nèi)部時(shí)鐘源和外部I/O引腳。這意味著外部電路可以提供方波,使定時(shí)器遞增,或者微控制器本身可以遞增定時(shí)器(這通常用作時(shí)鐘源)。

一些定時(shí)器(如定時(shí)器0)有比較單位,允許定時(shí)器在定時(shí)器等于某個(gè)值時(shí)觸發(fā)中斷。當(dāng)微控制器需要執(zhí)行在特定時(shí)間過去時(shí)執(zhí)行的事件時(shí),這非常有用。

一個(gè)這樣的例子涉及在需要每64uS發(fā)送一次脈沖同步脈沖時(shí)創(chuàng)建視頻信號(hào)(朋友)。其他示例包括多任務(wù),其中微控制器可以每毫秒切換到不同的任務(wù)。一旦匹配發(fā)生,也可以使這樣的比較單元清除定時(shí)器,這樣用戶就不必自己重置定時(shí)器。

定時(shí)器0:正常模式

在正常模式下,定時(shí)器0將在每個(gè)時(shí)鐘遞增,并且一旦計(jì)數(shù)器超過其最高值值(255,因?yàn)樗且粋€(gè)8位定時(shí)器),定時(shí)器回繞到值0并設(shè)置溢出位(TOV0位在寄存器TIFR0中找到)。

設(shè)置定時(shí)器0運(yùn)行在正常模式下,WGM02-WGM01位需要設(shè)置為0(注意; WGM02位于TCCR0B中,而位WGM01和WGM00位于寄存器TCCR0A中。

寄存器TCCR0A和TCCR0B中的波形位

定時(shí)器0:CTC模式

比較匹配模式(CTC)上的清除定時(shí)器與普通模式類似,除非定時(shí)器達(dá)到的值寄存器OCR0A,定時(shí)器清零(復(fù)位為0x00)。這可用于創(chuàng)建定時(shí)事件,包括延遲和中斷,而無需使用軟件資源(全部在硬件中完成)。

當(dāng)定時(shí)器等于OCR0A的值時(shí),則設(shè)置OCF0A,表示匹配在定時(shí)器和OCR0A之間發(fā)生。要在CTC模式下配置定時(shí)器0,需要將WGM02-WMG00位設(shè)置為0x02。

定時(shí)器0時(shí)鐘源

定時(shí)器0可以通過外部源(通過T0引腳)或內(nèi)部I/O時(shí)鐘提供時(shí)鐘。某些I/O時(shí)鐘源可以如表所示進(jìn)行預(yù)分頻,時(shí)鐘源選擇位可在TCCR0B寄存器中找到。

從顯示預(yù)分量選項(xiàng)的ATmega數(shù)據(jù)表中提取

關(guān)于中斷標(biāo)志的注意事項(xiàng)

重要的是要注意AVR是為了清除標(biāo)志,你必須在標(biāo)志上寫一個(gè)邏輯的。這意味著,例如,如果要清除溢出標(biāo)志,則將1寫入寫入0的寄存器INSTEAD

示例1:正常模式

此模式顯示在正常模式下使用定時(shí)器0來打開和關(guān)閉LED每次計(jì)數(shù)器翻轉(zhuǎn)(超過255)。

/*

* AVR Timer.c

*

* Created: 08/01/2018 13:16:36

* Author : RobinLaptop

*/

#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

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

while (1)

{

// Wait until the TOV0 bit is set

while(?。═IFR0 & (1 《《 TOV0)))

{

}

// Clear the overflow flag by writing a 1 to it. I know, thats dumb but that‘s how it is!

clearFlag(TIFR0, TOV0);

// Toggle the LED (PD0 , Pin 2)

PORTD = PORTD ^ (1 《《 PD0);

}

}

示例2:CTC模式

當(dāng)定時(shí)器0等于OCR0A的值時(shí),該模式將切換LED。一旦匹配發(fā)生,定時(shí)器將自動(dòng)復(fù)位并設(shè)置OCF0A標(biāo)志。

/*

* Example 2 - CTC.c

*

* Created: 08/01/2018 13:43:06

* Author : RobinLaptop

*/

#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

int main(void)

{

// Initialize Registers

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

setBit(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

OCR0A = 0x7F; // Reset the timer once the value of the timer reaches 127

while (1)

{

// Wait until the OCF0A bit is set

while(?。═IFR0 & (1 《《 OCF0A)))

{

}

// Clear the overflow flag by writing a 1 to it. I know, thats dumb but that’s how it is!

clearFlag(TIFR0, OCF0A);

// Toggle the LED (PD0 , Pin 2)

PORTD = PORTD ^ (1 《《 PD0);

}

}

結(jié)論

本教程僅涉及計(jì)時(shí)器能夠做更多事情的計(jì)時(shí)器。例如,這些定時(shí)器可以啟用它們的中斷,這將允許微控制器在設(shè)置標(biāo)志后立即運(yùn)行時(shí)間敏感的代碼?;蛘撸覀兛梢詧?zhí)行其他代碼,而不是使用while循環(huán)來等待溢出標(biāo)志觸發(fā),這樣可以更有效地利用CPU。很明顯,定時(shí)器非常強(qiáng)大,可以為大多數(shù)項(xiàng)目帶來巨大的變化!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • ATmega168
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    9395
  • TIMER0
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    7568
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    兩種驅(qū)動(dòng)方式永磁直線開關(guān)磁鏈電機(jī)的研究

    摘要:永磁開關(guān)磁鏈電機(jī)數(shù)學(xué)模型可以等效為永磁無刷電機(jī),普遍采用方波驅(qū)動(dòng)方式。在有限元基礎(chǔ)分析6/7極直線式磁鏈電機(jī)反電勢(shì)波形,采用方波和正弦波驅(qū)動(dòng)方式,比較兩種方式的電流、電壓、平均推力大小
    發(fā)表于 06-09 16:18

    TIMER定時(shí)器

    TIMER0TIMER7定時(shí)器載波相位有偏差,如何解決
    發(fā)表于 06-06 14:41

    兩種激光模式介紹

    激光束的輸出實(shí)際寬頻率范圍內(nèi)的許多不同頻率的緊密間隔的光譜線組成。離散光譜分量稱為激光模式laser modes,覆蓋范圍是負(fù)責(zé)激光輸出的原子躍遷的線寬。
    的頭像 發(fā)表于 04-15 10:18 ?318次閱讀
    <b class='flag-5'>兩種</b>激光<b class='flag-5'>模式</b>介紹

    電流輸出 vs 電壓輸出:兩種傳感器輸出模式有什么區(qū)別?

    工業(yè)自動(dòng)化和數(shù)據(jù)采集領(lǐng)域,傳感器扮演著至關(guān)重要的角色,它們將各種物理量(如溫度、壓力、流量等)轉(zhuǎn)換為可被測(cè)量和分析的電信號(hào)。而傳感器的輸出信號(hào)主要分為兩種模式:電流輸出和電壓輸出。理解這兩種
    的頭像 發(fā)表于 02-08 18:21 ?727次閱讀
    電流輸出 vs 電壓輸出:<b class='flag-5'>兩種</b>傳感器輸出<b class='flag-5'>模式</b>有什么區(qū)別?

    TLV5616和TLV5636兩種工作模式FAST和SLOW分別有什么特點(diǎn),優(yōu)勢(shì),選擇時(shí)應(yīng)該注意什么?

    大家好 我想請(qǐng)教一大家關(guān)于TLV5616和TLV5636的工作模式,具體就是兩種工作模式FAST和SLOW分別有什么特點(diǎn),優(yōu)勢(shì),選擇時(shí)應(yīng)該注意什么?謝謝!
    發(fā)表于 02-07 07:02

    用TLC2551采外部電壓,只有0和2096兩種值是怎么回事?

    用TLC2551采外部電壓,只有0和2096兩種值是怎么回事?求解決辦法。
    發(fā)表于 02-06 07:31

    ADS1259讀取模數(shù)轉(zhuǎn)換結(jié)果的時(shí)候是否是兩種讀取模式

    咨詢ADS1259讀取模數(shù)轉(zhuǎn)換結(jié)果的時(shí)候是否是兩種讀取模式,一是讀引腳(DIN),一是讀寄存器,讀寄存器的數(shù)據(jù)是進(jìn)行數(shù)據(jù)校驗(yàn)? 還有
    發(fā)表于 01-22 07:18

    求助一關(guān)于51系列單片機(jī)的Timer0的計(jì)時(shí)問題,TH0、TL0+1的時(shí)間是怎么算的?

    一次中斷,時(shí)間似乎對(duì)不上??或者有沒有大神指點(diǎn)一正確的計(jì)算方法?說明書附件奉上*附件:CH552DS1.PDF //Timer0中斷 void writeByCZC_Interrupt(void
    發(fā)表于 12-20 10:57

    ADS1292R有 \"1 ch ECG + 1 ch呼吸偵測(cè)\" 或 \"2 ch ECG\" 兩種模式,是否可以在產(chǎn)品實(shí)現(xiàn)自行切換兩種使用模式?

    請(qǐng)問 ADS1292R 有 \"1 ch ECG + 1 ch 呼吸偵測(cè)\" 或 \"2 ch ECG\" 兩種模式,是否可以在產(chǎn)品實(shí)現(xiàn)讓用戶自行切換兩種使用
    發(fā)表于 12-13 14:43

    兩種轉(zhuǎn)換控制模式Zone 1 Transfer和Zone 2 Transfer怎么區(qū)分使用?

    兩種轉(zhuǎn)換控制模式Zone 1 Transfer和Zone 2 Transfer怎么區(qū)分使用?現(xiàn)在想用Zone 1 Transfer模式,硬件或軟件應(yīng)該怎么設(shè)置?
    發(fā)表于 11-19 06:20

    噪聲傳導(dǎo)的兩種模式

    噪聲傳導(dǎo)有兩種模式,一為差模傳導(dǎo),一為共模傳導(dǎo)。
    的頭像 發(fā)表于 10-15 11:33 ?700次閱讀
    噪聲傳導(dǎo)的<b class='flag-5'>兩種</b><b class='flag-5'>模式</b>

    兩種工作模式,opa695的應(yīng)用是不是不同呢?

    為什么opa695的datesheet寫道:急可以雙電源又可以單電源供電,是不是兩種工作模式,opa695的應(yīng)用不同呢?
    發(fā)表于 09-13 06:25

    紅石比較器兩種模式的作用

    紅石比較器是Minecraft中的一非常重要的紅石元件,它用于比較個(gè)紅石信號(hào)的強(qiáng)度,并根據(jù)比較結(jié)果輸出不同的信號(hào)強(qiáng)度。比較器有兩種模式:比較模式
    的頭像 發(fā)表于 09-05 09:17 ?1432次閱讀

    晶閘管的阻斷狀態(tài)有兩種是什么

    晶閘管(Thyristor)是一半導(dǎo)體器件,具有單向?qū)щ娦裕瑥V泛應(yīng)用于電力電子領(lǐng)域。晶閘管的阻斷狀態(tài)有兩種:正向阻斷狀態(tài)和反向阻斷狀態(tài)。以下是對(duì)這兩種阻斷狀態(tài)的分析。 正向阻斷狀態(tài) 正向阻斷狀態(tài)
    的頭像 發(fā)表于 08-14 16:49 ?1333次閱讀

    GD32E230C8T6高級(jí)定時(shí)器timer0無法正常輸出PWM波形的原因?

    原本想用高級(jí)定時(shí)器的中央對(duì)齊計(jì)數(shù)模式來輸出SPWM波,但是TIMER0的CH0,CH1等口,都無法正常輸出PWM波形,換成普通定時(shí)器就可以了,STM32里對(duì)于高級(jí)定時(shí)器輸出PWM波形,需要多加一個(gè)TIM_CtrlPWMOutpu
    發(fā)表于 07-26 06:34
    主站蜘蛛池模板: 天堂a| 深夜大尺度视频在线观看 | 五月婷婷久久综合 | 欧美三级 欧美一级 | 日本欧美一区二区 | 亚洲午夜久久久精品影院视色 | 日韩爽片 | 免费黄色欧美 | 日韩一级特黄毛片在线看 | 日本黄页网站 | 男女爱爱是免费看 | 日本高清色视频www 日本高清色视频在线观看免费 | 国产香蕉视频在线观看 | 夜夜摸夜夜爽 | 老熟女一级毛片 | 久久澡 | 成人欧美一区二区三区视频不卡 | 高h视频网站| 四虎国产精品永久在线看 | 久久精品国产免费看久久精品 | 国产精品久久福利网站 | 欧美卡一卡二卡新区网站 | 国产欧美高清 | 曰本在线网 | 精品国产免费观看一区高清 | 天天黄色 | 激情六月婷婷开心丁香开心 | 色婷婷综合缴情综六月 | 欧美性猛交xxxx免费 | 成年人www | 女人张开腿等男人桶免费视频 | 天天躁狠狠躁 | 天堂精品视频 | 四虎影视在线影院在线观看 | 免费视频你懂得 | 综合五月婷婷 | 色吧在线视频 | 天天舔天天操天天干 | 毛片2016免费视频 | 青草青视频在线观看 | 国产农村三片免费网站 |