91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

電子發(fā)燒友App

硬聲App

掃碼添加小助手

加入工程師交流群

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

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

3天內不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>Arduino Nano上的自定義定時器功能

Arduino Nano上的自定義定時器功能

2022-10-26 | zip | 0.03 MB | 次下載 | 免費

資料介紹

描述

時間敏感的任務

幾乎所有使用微控制器的項目都具有某種與時間相關的組件,例如延遲或重復任務。內部定時器電路通過對從預分頻器或時鐘直接獲得的每個脈沖進行計數(shù)來啟用此功能。

pYYBAGNYf9uACBlRAABvtWOTcZY288.png
?

通過獲取此計數(shù)器的值,您可以確定已經過去了多少時間。例如,如果 MCU 的時鐘設置為 125KHz,其中一個定時器設置為使用該時鐘,并且其預分頻器設置為 1/1024,則其計數(shù)器寄存器的每個增量大約等于 1/122 秒,這源自:

t = 1 / (CLK / prescaler)

所以(1/122) = 1 / (125000 / 1024)

如果您好奇,預分頻器的工作是將輸入的時鐘脈沖除以某個值,這會使計數(shù)器減慢該因子。因此,預分頻值為 4 的定時器會將 8Mhz 的系統(tǒng)時鐘視為 2MHz。Arduino 的 millis()、delay() 和 micros() 都依賴這些定時器來操作。但是有一個問題:delay() 是阻塞的,為了使它成為非阻塞,你必須在每個循環(huán)中檢查 millis() 的值。

改用中斷

為了避免這個問題,ATmega328P 的定時器可以設置為在幾個不同的觸發(fā)器上觸發(fā)中斷。其中之一是溢出標志,每當計數(shù)器寄存器從其最大值翻轉到 0 時都會設置該標志,例如 8 位寄存器從 255 變?yōu)?0。觸發(fā)中斷的另一種方法是使用比較寄存器,它存儲一個與計數(shù)器連續(xù)檢查的值,并在計數(shù)器達到該值時引發(fā)中斷。ATmega328P 等微控制器使用這種功能來控制引腳上的 PWM,而其他更高級的 MCU 能夠直接從定時器切換引腳,而完全不需要 CPU。

設置硬件

對于這個例子,我創(chuàng)建了一個簡單的程序,它為 ATmega328P 的 Timer/Counter2 設置一個比較值,在比較匹配 A 上觸發(fā)一個中斷,并切換一個引腳的值。這方面的所有細節(jié)都可以在微控制器的數(shù)據(jù)表中找到。代碼首先調用 hardware_setup() 函數(shù),其中設置了幾個寄存器來配置系統(tǒng)、定時器和引腳。(1 << DDD2)通過將 的值放入寄存器,將數(shù)字引腳 2 設置為輸出。DDRD接下來,通過將 1 放入 TCCR2B 寄存器的時鐘選擇位字段來設置定時器 2 的預分頻器,將預分頻器設置為 1/1024。

poYBAGNYf92ATwYJAACLa44sLXs591.png
?

接下來,將 255 的值放入比較寄存器 A ( OCR2A),這意味著當計數(shù)器到達 255 時將發(fā)生事件。TIMSK2寄存器得到一個值(1 << OCIE2A)放入其中,這讓定時器 2 在比較匹配時輸出中斷A 被觸發(fā)。最后,在每次比較匹配時也TCCR2A獲得一個(1 << COM2A0)切換的值。D12

poYBAGNYf9-AGuQrAABcpd-JQaw655.png
?

程序執(zhí)行和最終想法

雖然我們設置了TIMSK2寄存器觸發(fā)中斷,但還是需要處理的。這是通過創(chuàng)建將在引發(fā)中斷時觸發(fā)的 ISR(中斷服務程序)來實現(xiàn)的。在附加的代碼中,ISR 增加一個計數(shù)器并清除標志。在 main() 的 while 循環(huán)中,檢查計數(shù)器變量以查看它何時達到 100,如果達到了,則通過執(zhí)行 XOR 操作來切換 D2 的值,如下所示:PORTD ^= (1 << PORTD2);

使count變量 volatile 很重要,因為它告訴編譯器它的值可以在程序正常執(zhí)行路徑之外的任何時間更改。該程序應通過編程器刷新到 Nano。不要將 Arduino 函數(shù)與自定義定時器一起使用,因為這會弄亂你的定時器和內置函數(shù)。

pYYBAGNYf-KARnD_AADZHYgfQDY147.png
?

使用此代碼,連接到引腳 2 的 LED 應每 2.5 秒閃爍一次。嘗試更改不同的值或在各種模式下設置其他計時器。

?
?

?


微控制器 定時器 Arduino
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1新一代網(wǎng)絡可視化(NPB 2.0)
  2. 3.40 MB  |  1次下載  |  免費
  3. 2冷柜-電氣控制系統(tǒng)講解
  4. 13.68 MB   |  1次下載  |  10 積分
  5. 3MDD品牌三極管MMBT3906數(shù)據(jù)手冊
  6. 2.33 MB  |  次下載  |  免費
  7. 4MDD品牌三極管S9012數(shù)據(jù)手冊
  8. 2.62 MB  |  次下載  |  免費
  9. 5LAT1218 如何選擇和設置外部晶體適配 BlueNRG-X
  10. 0.60 MB   |  次下載  |  3 積分
  11. 6LAT1216 Blue NRG-1/2 系列芯片 Flash 操作與 BLE 事件的互斥處理
  12. 0.89 MB   |  次下載  |  3 積分
  13. 7收音環(huán)繞擴音機 AVR-1507手冊
  14. 2.50 MB   |  次下載  |  免費
  15. 8MS1000TA 超聲波測量模擬前端芯片技術手冊
  16. 0.60 MB   |  次下載  |  免費

本月

  1. 1愛華AIWA HS-J202維修手冊
  2. 3.34 MB   |  37次下載  |  免費
  3. 2PC5502負載均流控制電路數(shù)據(jù)手冊
  4. 1.63 MB   |  23次下載  |  免費
  5. 3NB-IoT芯片廠商的資料說明
  6. 0.31 MB   |  22次下載  |  1 積分
  7. 4UWB653Pro USB口測距通信定位模塊規(guī)格書
  8. 838.47 KB  |  5次下載  |  免費
  9. 5蘇泊爾DCL6907(即CHK-S007)單芯片電磁爐原理圖資料
  10. 0.04 MB   |  4次下載  |  1 積分
  11. 6蘇泊爾DCL6909(即CHK-S009)單芯片電磁爐原理圖資料
  12. 0.08 MB   |  2次下載  |  1 積分
  13. 7100W準諧振反激式恒流電源電路圖資料
  14. 0.09 MB   |  2次下載  |  1 積分
  15. 8FS8025B USB的PD和OC快充協(xié)議電壓誘騙控制器IC技術手冊
  16. 1.81 MB   |  1次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935137次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191439次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183353次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81602次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73822次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65991次下載  |  10 積分