无证件编程的痛苦
我认为在没有适当文档的情况下,第一次找出新的微控制器编程可能是嵌入式系统中最痛苦的任务之一。这项任务主要涉及查找几乎解释您的情况但不完全解释的YouTube视频,浏览网站并没有找到任何相关信息,最终认为您找到了解决方案,但是随后出现了一个从未在人类历史上记录的错误,所以您在网络上没有发现任何内容。
这就是为什么我想缩小有关如何通过Platformio与Arduino编程的差距。
代码片段存储库
本文中使用的所有代码段都可以在随附的GitHub repository中找到,使其易于访问。
免责声明
本文仅关注如何编程Attiny85。因此,这也不是关于如何设置和编程Arduino的完整指南。在本文中,我将使用Arduino Nano进行所有示例。
概述
这些是如何编程Attiny85的一般步骤:
- 设置Arduino作为ISP程序员
- 加密Attiny85
- 设置平台项目
- 编程它!
1.设置Arduino作为ISP程序员
第一步是修改Arduino的行为,将其转换为功能强大的ISP(系统内程序员)。此步骤相对简单:您只需要将代码上传到Arduino即可。无论您是用Arduino IDE上传还是通过Platformio上传代码。
可以在此处找到代码:Arduino as ISP Code。
完成此操作后,您准备将Attiny85与Arduino连接起来!
2.加密Attiny85
接线需要一个附加的部分:在Arduino的重置和地面销之间需要一个最小容量的电容器。电容器可防止Arduino在编程Attiny85时重置。
这些是连接:
arduino | attiny85 |
---|---|
5V | VCC |
地面 | 地面 |
数字引脚13 | gpio 2 |
数字引脚12 | gpio 1 |
数字引脚11 | GPIO 0 |
数字引脚10 | 重置 |
这是所有连接的例证:
笔记
即使插图中有Arduino Nano,只要您使用上面提到的相同的数字引脚,您也可以使用另一个Arduino(例如Uno,Mega等)。
3.设置平台项目
现在是重要的步骤:设置项目。打开Vscode(就我而言)并访问Platformio Home。在“快速访问”选项卡中,选择“新项目”。在那里,您会发现三个输入字段:
- 名称
- 董事会
- 框架
给您的项目一个合适的名称。
在“板”输入字段中,键入“ attiny85”。您应该看到一个称为“通用Attiny85(Atmel)”的结果,然后选择它。确保框架为“ arduino”。
可选,您可以通过删除复选框并选择位置来更改计算机上的项目位置。
如果一切都完成,请单击“完成”。 Platformio将设置该项目,该项目通常最多需要20秒。
设置项目后,应自动打开“ platform.ini”文件。如果没有,您可以在项目的主要目录中找到它。
在此文件中,您会找到该项目的所有配置,例如应该如何上传,它使用的框架,它是哪个微控制器,等等。
这是需要更改以使用Arduino对Attiny进行编程的关键文件。删除此文件的内容,然后粘贴在以下片段中:
[env:program_via_ArduinoISP]
platform = atmelavr
framework = arduino
board = attiny85
upload_protocol = stk500v1
; each flag in a new line
upload_flags =
-P$UPLOAD_PORT
-b$UPLOAD_SPEED
upload_speed = 19200
upload_port = COMX ; Set the port to the Arduino COM Port
(您可以在GitHub repository中找到此片段)
在这里您必须进行一个自定义。在最后一行中,您需要将“ comx”更改为Arduino的正确com端口。例如,如果您的Arduino连接到COM端口3,则必须将其更改为“ COM3”。
现在项目设置完成了,可以编程Attiny!
4.编程!
在src
目录中,您可以找到带有Arduino的基本示例代码的main.cpp
。将您的代码写入此文件,然后您应该能够上传。
您可以在左侧的“平台”选项卡中上传,然后单击“上传”。
控制台输出应该看起来像这样:
Building in release mode
Checking size .pio\build\program_via_ArduinoISP\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM: [== ] 16.4% (used 84 bytes from 512 bytes)
Flash: [== ] 15.0% (used 1230 bytes from 8192 bytes)
Configuring upload protocol...
AVAILABLE: stk500v1
CURRENT: upload_protocol = stk500v1
Looking for upload port...
Uploading .pio\build\program_via_ArduinoISP\firmware.hex
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e930b (probably t85)
avrdude: erasing chip
avrdude: reading input file ".pio\build\program_via_ArduinoISP\firmware.hex"
avrdude: writing flash (1230 bytes):
Writing | ################################################## | 100% 1.81s
avrdude: 1230 bytes of flash written
avrdude: verifying flash memory against .pio\build\program_via_ArduinoISP\firmware.hex:
avrdude: load data flash data from input file .pio\build\program_via_ArduinoISP\firmware.hex:
avrdude: input file .pio\build\program_via_ArduinoISP\firmware.hex contains 1230 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 0.88s
avrdude: verifying ...
avrdude: 1230 bytes of flash verified
avrdude: safemode: Fuses OK (E:FF, H:DF, L:62)
avrdude done. Thank you.
您已经成功编程了您的Attiny85!
结局
感谢您阅读本文!我希望通过您的Attiny编程对您有所帮助。我对这个系列还有很多其他想法,所以请继续关注!
随时在下面留下任何评论或问题,我会尽力帮助您!
愿您的代码无漏洞!