第一次使用 ICSP Sparkfun AVR Pocket Programmer 后无法对 Arduino 328P 进行编程

Can't program Arduino 328P after first time use of ICSP Sparkfun AVR Pocket Programmer

我需要将我的欠压电压从 Arduino 默认值更改为 4.3V。我从 Sparkfun 购买了 AVR Pocket Programmer 并按照说明连接。我有一个带有 CC3000 wifi 扩展板的 Arduino 328P。在更换 ICSP 保险丝之前一切正常。使用 AVRDude 命令成功读取我的默认保险丝设置,

avrdude -c usbtiny -p atmega328p 是 H=05,L=FF,E=DE。

我运行以下命令将BOD设置更改为4.3,

avrdude -c usbtiny -p atmega328p -U lfuse:w:0xff:m -U hfuse:w:0x05:m -U efuse:w:0xfc:m 按照使用 Engbedded AVR 保险丝计算器的说明进行操作。这似乎 运行 成功了。在此之后我完全无法对我的板进行编程并且无法 运行 avrdude -c usbtiny -p atmega328p 没有初始化失败,rc=-1 错误。

我也快要死了,因为我差一点就将我的项目启动到一个有机农场,用于创新灌溉控制系统的第一阶段。

希望问题出在你的连接上。检查你的连接,如果它们不是问题,你还有一些工作要做:

看了你的保险丝后,我搜索了一些东西并看到了 this。默认保险丝值为:

  • 低熔丝 0xFF
  • 高熔丝 0xDE
  • 扩展保险丝 0x05

你搞错了上面的保险丝。我用 AtmelStudio 来检查你的保险丝会做什么:

avrdude -c usbtiny -p atmega328p -U lfuse:w:0xff:m -U hfuse:w:0x05:m -U efuse:w:0xfc:m

这将更改 RSTDISBL 值并启用 RSTDISBL。根据数据表,这样做将

Setting the reset disable fuse will cause JTAG and ISP programming to stop working. Can only be unset with high-voltage programming

通过这样做,您的芯片变砖了。现在,您可能想要撤消此操作。在不花钱的情况下以便宜的方式做到这一点的唯一方法 STK500 是购买一个新的 Atmega328p 或使用另一个 Arduino Uno 来使用高压编程来完全擦除你的砖块。

为此,请按照 this 教程擦除您的芯片。本教程使用性能板,但您可以在面包板上做同样的事情。

现在,一旦你擦掉了变砖的 Arduino,你就必须安装正确的保险丝。

默认的是:

  • 低熔丝 0xFF
  • 高熔丝 0xDE
  • 扩展保险丝 0x05

现在,您想将 Brown-out Voltage 更改为 4.3V 对吗?再次使用 AtmelStudio,我想出了以下保险丝:

  • 低熔丝 0xFF
  • 高熔丝 0xDE
  • 扩展保险丝 0x04

一旦你编程了,你应该有一个工作的 Arduino!

如果您需要通过 USB 使用 Arduino 软件而不是 AVR 编程器对 Arduino 进行编程,则必须对引导加载程序进行编程。如果您需要帮助,请回复。也就是说,如果您从现在开始一直使用 AVR 编程器,则可能不需要引导加载程序。

这将解决您的问题并使您的掉电电压正确!

始终使用 AtmelStudio 之类的工具对您的保险丝进行三重检查,因为您最终可能会像在这种情况下那样做很多额外的工作。