
Arduino AVR 在系统编程器
Randall 将 Arduino 转换为 AVR 芯片编程硬件,用于 AVRDude。该项目使用 Arduino 对 AVR tiny13 和其他 tiny AVR 芯片进行编程。他提供了代码和说明来实现 Atmel AVR910 在系统编程协议。我将 Atmel AVR910 在系统编程器协议移植到 Arduino。现在我可以向我的 ATtiny2313 和 tiny13 芯片写入程序。Arduino 草图可在此处下载。它与 AVRDude 编程软件配合使用。本文将展示如何使用 Arduino 向 tiny13 上传程序。第一步是下载 zip 文件,提取 .pde 文件,然后将其加载到 Arduino IDE 中,并写入 Arduino。接下来我们可以连接 tiny13 芯片。

原始的 AVR910 编程器不支持 tiny13 芯片。我在 Arduino 版本中添加了 tiny13 支持,并为其分配了部件 ID 1。我还必须修改 avrdude.conf 文件。我刚刚添加了以下行
avr910_devcode=0x01
到 tiny13 部分,紧接在 stk500_devcode 行之后。
1-power 我将 tiny13 芯片放在无焊面包板上,并从 Arduino 连接电源。我还在 tiny13 的引脚 8 和引脚 4 之间添加了一个旁路电容。这有助于平滑芯片的电源。
我在移植 avr910 时添加了 LED 支持。当系统处于编程模式时,LED 会亮起。将 LED 添加到面包板上。使用 1Kohm 电阻将其连接到地线,并连接到 Arduino 引脚 9。注意 LED 的极性。复位线也应连接,从 Arduino 的引脚 10 连接到 tiny13 的引脚 1。2-reset-LED
接下来连接 SPI 接口。Arduino 的 Mega8 具有硬件 SPI 支持。SPI 线路需要按以下方式连接到 tiny13:
Arduino ATtiny13
引脚 13 (SCK) 引脚 7
引脚 12 (MISO) 引脚 6
引脚 11 (MOSI) 引脚 5
SPI 电缆
我使用这条电缆将 SPI 线路连接到面包板。当 Arduino 靠近面包板时,如上方照片所示,电缆必须扭转一次以正确匹配。
连接所有内容后,您可以给 Arduino 通电并开始使用 AVRDUDE。首先,您需要知道 Arduino 使用哪个端口。我的 USB Arduino 显示在 com4 端口上,因此我将在示例中使用它。我们需要告诉 AVRDUDE 使用哪个端口、使用哪个部件以及使用哪个 ISP 编程器。如果您运行以下命令行,它应该连接到 tiny13 并读取设备签名 (0×1e9007)。
> avrdude -P com4 -p t13 -c avr910
AVRDUDE 还会抱怨无法正确读取 lfuse。添加 -u 开关以绕过此限制。
> avrdude -P com4 -p t13 -c avr910 -u
这样工作后,我们可以进入 AVRDUDE 的终端模式并检查 tiny13。
> avrdude -P com4 -p t13 -c avr910 -u -t
输入 ’sig’ 再次查看设备签名:
avrdude> sig
Reading | ################################## | 100% 0.02s
设备签名 = 0×1e9007
输入 ’read flash 0 16’ 读取闪存的前 16 个字节。如果芯片尚未编程,它应该全是 0xFF。您也可以使用十六进制数字,例如:’read eeprom 0×10 0×10’。
在 AVRDUDE 终端模式下,我们可以写入 eeprom,但不能写入 tiny13 的闪存。要将字符串 ’BEEP’ 存储到 eeprom 中,您可以输入以下内容:
avrdude> write eeprom 0 66 69 69 80 0
avrdude> read eeprom 0 8
如果那样 worked,您刚刚写入了 eeprom 并读回了内容。当您完成终端模式时,输入 ’quit’。
AVRDUDE 不会在终端模式下写入 tiny13 闪存,因为闪存是按页模式编程的。您必须从命令行写入闪存。-U 开关用于从命令行读写存储器。您可以一次使用多个 -U 命令。另一件要注意的事是,AVRDUDE 在写入闪存之前会擦除芯片。如果您写入闪存,EEPROM 中的任何内容都必须重新加载。
从基本命令开始:
> avrdude -P com4 -p t13 -c avr910 -u
然后在末尾添加 -U 命令。要将文件 ’target.hex’ 写入 tiny13,请使用以下内容:
-U target.hex
这是简化语法。当您想将 hex 文件写入芯片闪存时,可以使用它。完整的写入语法是:
-U flash:w:target.hex:i
(将 target.hex 写入闪存,target.hex 是 Intel S-Record 格式。) AVRDUDE 可以推断文件的格式,因此您实际上可以省略 :i。
要写入 EEPROM,请使用:
-u eeprom:w:target.eep
您还可以读出芯片内容并与磁盘上的文件进行验证。
SPI-mega8
我使用的基本开发工作流程是在 AVRStudio 4 中构建软件,然后使用 AVRDUDE 写入目标芯片。我已用它编程了 tiny13、tiny15、tiny2313 和 mega8。



这里还没有内容,您有什么问题吗?