1

这与我在 Arduino 论坛上发布的问题相同,因为这里可能有人可以帮助我:) 我正在使用 SparkFun 的 Arduino Pro Micro 3.3V/8MHz 进行项目。我已经安装了驱动程序,在 IDE 上添加了对板的支持,并尝试将草图上传到它 - 它工作正常。我意识到板子附带的引导加载程序模拟了一个用于上传的不同串行端口,因为普通端口是 COM5,上传端口是 COM6。虽然对于这个项目,代码优化是最重要的,所以我转向了 Atmel Studio,我已经成功地使用了 UNO。我使用寄存器和函数为 Micro 构建了一个简单的闪烁代码:

#define ledpin PC6

#include <avr/io.h>
#include <util/delay.h>

int main(void)
{       
    DDRC |= (1 << ledpin);

    while(1)
    {
        PORTC |= (1 << ledpin);
        _delay_ms(1000);
        PORTC &= ~(1 << ledpin);
        _delay_ms(1000);
    }
}

我可以使用 avrdude 中的以下命令通过 Atmel Studio 上传它:

C:\Program Files (x86)\Arduino\hardware/tools/avr/bin/avrdude -C"C:\Program Files (x86)\Arduino\hardware/tools/avr/etc/avrdude.conf" -v -v -patmega32u4 -cavr109 -P\\.\COM6 -b57600 -D -Uflash:w:"$(ProjectDir)Debug\$(ItemFileName).hex":i

为了能够做到这一点,我必须在不到 750 毫秒的时间内按两次重置按钮,因为连接指南建议 ( https://learn.sparkfun.com/tutorials/pro-micro--fio-v3-hookup-指南/疑难解答和常见问题解答#ts-reset)。

该代码有效,但现在我注意到正常的串行端口(COM5)永远不会回来。可能是什么原因?我仍然可以将新代码上传到 Micro,所以引导加载程序应该没问题吧?

我在这里先向您的帮助表示感谢 :)

4

1 回答 1

1

我已经找到了解决方案。正如我在 Arduino 论坛上发布的:

我能够将 pro micro 恢复到 SparkFun 交付给我的状态。

为此,我使用 Arduino Uno 作为 ISP(以 ArduinoISP 为例)连接到 Micro 的 MISO、MOSI、SCLK 和 RST 引脚,并通过 Arduino IDE 上传引导加载程序。起初,我收到一个错误,内容如下:

avrdude: verification error, first mismatch at byte 0x0000 0xfe != 0xce

然后,当我意识到 board.txt 指定了要使用的保险丝位时,我开始研究如何在 Pro Micro 上设置保险丝位。我所要做的就是将“extended_fuses=0xfe”更改为“extended_fuses=0xce”,重新启动 IDE 并重试引导加载程序上传。最后,成功!为了测试它,我在 IDE 中编写了一个简单的 UART“Hello world”应用程序,它运行良好。

上传引导加载程序时,确保选择了正确的板(SparkFun 3.3V/8MHz)并选择 ISP Arduino 的 COM 端口。

于 2014-06-30T19:12:23.943 回答