資料介紹
描述
有沒有想過在不使用 Arduino 的analogWrite()函數(shù)的情況下在微芯片上啟用 PWM 有多難?
該項目僅使用本機硬件功能在 ATtiny85 上重新創(chuàng)建 Arduino 的 Fade 示例。在無法訪問 Arduino 的語法糖化的情況下,我們需要重新創(chuàng)建 Arduino 的analogWrite()函數(shù)。在引擎蓋下,此功能通過在 ATtiny85 上設(shè)置必要的寄存器來啟用脈沖寬度調(diào)制 (PWM)。有關(guān) PWM 如何工作的更多信息,請參閱這些精彩教程:
您還需要 Atmel 的數(shù)據(jù)表來了解寄存器的命名方式以及它們控制的功能:
第 1 步:組裝電路
按照項目附帶的圖表組裝電路。它看起來應(yīng)該類似于:

第 2 步:將您的 Arduino Uno 配置為充當(dāng)程序員
我們不會將我們的程序上傳到 Arduino Uno,而是將其用作編程設(shè)備以將我們的代碼傳輸?shù)?ATtiny。要使任何 Arduino 硬件充當(dāng)程序員,請打開 Arduino IDE 并選擇文件 > 示例 > ArduinoISP 。驗證我們的 Arduino Uno 在Tools > Board and Tools > Port中被正確選擇。打開示例草圖,選擇Sketch > Upload 。我們的 Arduino Uno 現(xiàn)在充當(dāng)程序員。
接下來我們需要為 ATtiny 安裝核心,這樣我們就可以使用它的庫了。打開首選項并在其他 Board Manager URL下添加:
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
重啟 Arduino IDE,點擊Tools > Board > Board Manager…并搜索 ATtiny。您應(yīng)該找到David A. Mellis 的結(jié)果 attiny 。點擊Install將 ATtiny 的代碼添加到 Arduino IDE 中。
現(xiàn)在我們可以選擇我們的 ATTiny 作為上傳目標(biāo)。在“工具”>“電路板”中選擇ATtiny85 ,在“工具”>“端口”下選擇 Arduino Uno。在工具 > 程序員下選擇 Arduino 作為 ISP。要將代碼上傳到我們的 ATtiny,請選擇Sketch > Upload Using Programmer 。打開此項目附帶的代碼并將其上傳到 ATtiny。幾秒鐘后,LED 應(yīng)該開始閃爍,因為 ATtiny 開始執(zhí)行程序代碼。如果拋出任何錯誤,通常是因為布線錯誤。仔細(xì)檢查所有內(nèi)容,重新啟動 Arduino IDE 并再試一次。
第 3 步:讓我們編寫代碼
由于我們不想使用 Arduino 的任何內(nèi)置功能,我們現(xiàn)在需要手動包含 avr-libc 庫。
#include
#include
接下來,我們需要在 ATtiny 上啟用脈沖寬度調(diào)制 (PWM)。PWM 允許我們像使用 analogWrite() 函數(shù)一樣控制輸出。幕后發(fā)生的事情是特殊寄存器中的某些位被設(shè)置為啟用 PWM:
int main()
{
DDRB = 1 << DDB0;
TCCR0A = 1 << COM0A1 | 1 << WGM01 | 1 << WGM00;
TCCR0B = 1 << CS00;
}
第一個寄存器是數(shù)據(jù)方向寄存器端口 B ( DDRB )。這類似于“pinMode(0, OUTPUT)”,它設(shè)置引腳的數(shù)據(jù)方向。我們在 DDBO(端口 B 引腳 0)位置啟用該位。接下來的兩個寄存器是定時器/計數(shù)器控制寄存器 A 和 B ( TCCR0A , TCCR0B) 。它們控制 PWM 定時器。我們正在啟用用于比較匹配輸出 A 模式(將 PWM 設(shè)置為非反相模式)的位和用于波形生成模式寄存器 0 和 1 的另外兩位。這將啟用快速 PWM。
我們設(shè)置的最后一位是在定時器/計數(shù)器控制寄存器 B 中:我們禁用 PWM 定時器的預(yù)分頻。現(xiàn)在我們不調(diào)用 analogWrite()(就像我們使用 Arduino 的函數(shù)時那樣),而是將輸出比較寄存器 A ( OCR0A ) 設(shè)置為所需的值:
OCR0A = value;
其余部分類似于 Arduino IDE 中的原始 Fade.ino 示例草圖。整個項目代碼如下所示:
/*
Fade for ATtiny85 using only avr-libc
*/
#include
#include
int fadeAmount = 5;
int brightness = 0;
int main()
{
DDRB = 1 << DDB0;
TCCR0A = 1 << COM0A1 | 1 << WGM01 | 1 << WGM00;
TCCR0B = 1 << CS00;
while (1) {
brightness = brightness + fadeAmount;
if (brightness <= 0 || brightness >= 255) {
fadeAmount = -fadeAmount;
}
OCR0A = brightness;
_delay_ms(30);
}
return 0;
}
執(zhí)照
這個項目是在麻省理工學(xué)院許可證下發(fā)布的。
?
- VersaClock 6 系列寄存器描述和編程指南
- stm32使用延時實現(xiàn)呼吸燈寄存器版 0次下載
- 深度學(xué)習(xí)_硬件知識_上拉寄存器與下拉寄存器
- STM32的寄存器操作
- risc-v Sifive learn inventor基礎(chǔ)之硬件pwm&寄存器HifiveRev B pwm調(diào)速 電機調(diào)速 占空比
- tinyAVR 1系列ATtiny1617/3217數(shù)據(jù)手冊 6次下載
- 51單片機的寄存器組應(yīng)該如何設(shè)置
- 如何轉(zhuǎn)移目的地址在機器碼或寄存器中詳細(xì)編程免費下載
- APLL的編程和使用和和寄存器描述詳細(xì)概述 6次下載
- TMS320F2812寄存器定義 13次下載
- HELLODSP中F2812寄存器速查 14次下載
- 淺談ARM寄存器組織 1次下載
- 寄存器與移位寄存器 0次下載
- 多寄存器組網(wǎng)絡(luò)處理器上的寄存器分配技術(shù) 28次下載
- 寄存器與移位寄存器
- UVM寄存器模型的常規(guī)方法有哪些呢? 1971次閱讀
- CPSR寄存器和APSR寄存器的組成 4796次閱讀
- ARM通用寄存器及狀態(tài)寄存器詳解 7290次閱讀
- AArch64寄存器介紹 6214次閱讀
- 寄存器與內(nèi)存的區(qū)別 1w次閱讀
- 移位寄存器的原理 7.5w次閱讀
- 技術(shù) | FANUC數(shù)據(jù)寄存器和位置寄存器的運用介紹 1.7w次閱讀
- 寄存器變量 2403次閱讀
- 逆向基礎(chǔ)之寄存器和內(nèi)存詳解 2998次閱讀
- 移位寄存器怎么用_如何使用移位寄存器_移位寄存器的用途 2w次閱讀
- 移位寄存器的特點_移位寄存器工作原理 4.9w次閱讀
- 移位寄存器實驗報告_移位寄存器原理 2.8w次閱讀
- 對寄存器操作方法的經(jīng)驗和其總結(jié) 8775次閱讀
- 閃存存儲器是寄存器嗎?_寄存器和存儲器的區(qū)別 1.2w次閱讀
- 寄存器傳輸語言詳解 6268次閱讀
下載排行
本周
- 1DD3118電路圖紙資料
- 0.08 MB | 1次下載 | 免費
- 2AD庫封裝庫安裝教程
- 0.49 MB | 1次下載 | 免費
- 3PC6206 300mA低功耗低壓差線性穩(wěn)壓器中文資料
- 1.12 MB | 1次下載 | 免費
- 4網(wǎng)絡(luò)安全從業(yè)者入門指南
- 2.91 MB | 1次下載 | 免費
- 5DS-CS3A P00-CN-V3
- 618.05 KB | 1次下載 | 免費
- 6海川SM5701規(guī)格書
- 1.48 MB | 次下載 | 免費
- 7H20PR5電磁爐IGBT功率管規(guī)格書
- 1.68 MB | 次下載 | 1 積分
- 8IP防護等級說明
- 0.08 MB | 次下載 | 免費
本月
- 1貼片三極管上的印字與真實名稱的對照表詳細(xì)說明
- 0.50 MB | 103次下載 | 1 積分
- 2涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 89次下載 | 1 積分
- 3錦銳科技CA51F2 SDK開發(fā)包
- 24.06 MB | 43次下載 | 1 積分
- 4錦銳CA51F005 SDK開發(fā)包
- 19.47 MB | 19次下載 | 1 積分
- 5PCB的EMC設(shè)計指南
- 2.47 MB | 16次下載 | 1 積分
- 6HC05藍(lán)牙原理圖加PCB
- 15.76 MB | 13次下載 | 1 積分
- 7802.11_Wireless_Networks
- 4.17 MB | 12次下載 | 免費
- 8蘋果iphone 11電路原理圖
- 4.98 MB | 6次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191390次下載 | 10 積分
- 5十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評論