资料介绍
描述
有没有想过在不使用 Arduino 的analogWrite()函数的情况下在微芯片上启用 PWM 有多难?
该项目仅使用本机硬件功能在 ATtiny85 上重新创建 Arduino 的 Fade 示例。在无法访问 Arduino 的语法糖化的情况下,我们需要重新创建 Arduino 的analogWrite()函数。在引擎盖下,此功能通过在 ATtiny85 上设置必要的寄存器来启用脉冲宽度调制 (PWM)。有关 PWM 如何工作的更多信息,请参阅这些精彩教程:
您还需要 Atmel 的数据表来了解寄存器的命名方式以及它们控制的功能:
第 1 步:组装电路
按照项目附带的图表组装电路。它看起来应该类似于:
第 2 步:将您的 Arduino Uno 配置为充当程序员
我们不会将我们的程序上传到 Arduino Uno,而是将其用作编程设备以将我们的代码传输到 ATtiny。要使任何 Arduino 硬件充当程序员,请打开 Arduino IDE 并选择文件 > 示例 > ArduinoISP 。验证我们的 Arduino Uno 在Tools > Board and Tools > Port中被正确选择。打开示例草图,选择Sketch > Upload 。我们的 Arduino Uno 现在充当程序员。
接下来我们需要为 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。您应该找到David A. Mellis 的结果 attiny 。点击Install将 ATtiny 的代码添加到 Arduino IDE 中。
现在我们可以选择我们的 ATTiny 作为上传目标。在“工具”>“电路板”中选择ATtiny85 ,在“工具”>“端口”下选择 Arduino Uno。在工具 > 程序员下选择 Arduino 作为 ISP。要将代码上传到我们的 ATtiny,请选择Sketch > Upload Using Programmer 。打开此项目附带的代码并将其上传到 ATtiny。几秒钟后,LED 应该开始闪烁,因为 ATtiny 开始执行程序代码。如果抛出任何错误,通常是因为布线错误。仔细检查所有内容,重新启动 Arduino IDE 并再试一次。
第 3 步:让我们编写代码
由于我们不想使用 Arduino 的任何内置功能,我们现在需要手动包含 avr-libc 库。
#include
#include
接下来,我们需要在 ATtiny 上启用脉冲宽度调制 (PWM)。PWM 允许我们像使用 analogWrite() 函数一样控制输出。幕后发生的事情是特殊寄存器中的某些位被设置为启用 PWM:
int main()
{
DDRB = 1 << DDB0;
TCCR0A = 1 << COM0A1 | 1 << WGM01 | 1 << WGM00;
TCCR0B = 1 << CS00;
}
第一个寄存器是数据方向寄存器端口 B ( DDRB )。这类似于“pinMode(0, OUTPUT)”,它设置引脚的数据方向。我们在 DDBO(端口 B 引脚 0)位置启用该位。接下来的两个寄存器是定时器/计数器控制寄存器 A 和 B ( TCCR0A , TCCR0B) 。它们控制 PWM 定时器。我们正在启用用于比较匹配输出 A 模式(将 PWM 设置为非反相模式)的位和用于波形生成模式寄存器 0 和 1 的另外两位。这将启用快速 PWM。
我们设置的最后一位是在定时器/计数器控制寄存器 B 中:我们禁用 PWM 定时器的预分频。现在我们不调用 analogWrite()(就像我们使用 Arduino 的函数时那样),而是将输出比较寄存器 A ( OCR0A ) 设置为所需的值:
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;
}
执照
这个项目是在麻省理工学院许可证下发布的。
- VersaClock 6 系列寄存器描述和编程指南
- stm32使用延时实现呼吸灯寄存器版 0次下载
- 深度学习_硬件知识_上拉寄存器与下拉寄存器
- STM32的寄存器操作
- risc-v Sifive learn inventor基础之硬件pwm&寄存器HifiveRev B pwm调速 电机调速 占空比
- tinyAVR 1系列ATtiny1617/3217数据手册 6次下载
- 51单片机的寄存器组应该如何设置
- 如何转移目的地址在机器码或寄存器中详细编程免费下载
- APLL的编程和使用和和寄存器描述详细概述 6次下载
- TMS320F2812寄存器定义 13次下载
- HELLODSP中F2812寄存器速查 12次下载
- 浅谈ARM寄存器组织 1次下载
- 寄存器与移位寄存器 0次下载
- 多寄存器组网络处理器上的寄存器分配技术 28次下载
- 寄存器与移位寄存器
- UVM寄存器模型的常规方法有哪些呢? 1402次阅读
- CPSR寄存器和APSR寄存器的组成 3628次阅读
- ARM通用寄存器及状态寄存器详解 6339次阅读
- AArch64寄存器介绍 5643次阅读
- 寄存器与内存的区别 9942次阅读
- 移位寄存器的原理 7.3w次阅读
- 技术 | FANUC数据寄存器和位置寄存器的运用介绍 1.6w次阅读
- 寄存器变量 2243次阅读
- 逆向基础之寄存器和内存详解 2902次阅读
- 移位寄存器怎么用_如何使用移位寄存器_移位寄存器的用途 1.9w次阅读
- 移位寄存器的特点_移位寄存器工作原理 4.8w次阅读
- 移位寄存器实验报告_移位寄存器原理 2.8w次阅读
- 对寄存器操作方法的经验和其总结 8618次阅读
- 闪存存储器是寄存器吗?_寄存器和存储器的区别 1.1w次阅读
- 寄存器传输语言详解 5997次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多