上传AVR程序后看不到Arduino port up

Cannot see Arduino port up after uploading AVR program

我正在尝试学习如何使用 AVR 库对我的 Arduino 进行 AVR 编程。我能够使用 Arduino IDE:

成功地将这个闪烁程序上传到我的 Arduino Micro
#include <avr/io.h>
#include <util/delay.h>

#define MS_DELAY 1000

int main (void) {
    // Set 7th bit of DDRC to 1: sets pin 13 to output
    DDRC |= _BV(DDC7);

    while (1) {
        // Set 7th bit of PORTC to 1: sets pin 13 to HIGH
        PORTC |= _BV(PORTC7);

        // Delay for MS_DELAY amount
        _delay_ms(MS_DELAY);

        // Turn off LED
        // Set 7th bit of PORTC to 0: sets pin 13 to LOW
        PORTC &= ~_BV(PORTC7);

        // Delay for MS_DELAY amount
        _delay_ms(MS_DELAY);
    }
}

但是现在我的 Arduino 没有出现在 Arduino IDE 中可连接的可用 Arduino 板列表中,这意味着我无法编写任何新程序。在通过终端使用 avrdude 命令上传之前我遇到了麻烦,这就是为什么我转而使用 Arduino IDE 来帮助我上传。在最终上传之前,Arduino 一直运行良好。

我在 macOS 上,所以我检查了我的 /dev/ 目录,但设备也不在那里(我的 Arduino 会显示为 /dev/cu.usbmodemXXXX)。

我该如何解决这个问题?我是不是不小心弄坏了我的 Arduino?以后我怎样才能防止这种情况发生?

谢谢!

好吧,我使用 double-click 技巧成功挽救了棋盘。

  1. 准备好空白的 Arduino 草图
  2. 编译它
  3. 将 Arduino 连接到计算机,然后 double-click 重置按钮。这将使 Arduino 处于“引导加载程序”模式大约 8 秒。 Arduino 的板载 LED 应该开始闪烁。
  4. Select Arduino 端口并点击上传。希望这个过程足够快,可以在退出“引导加载程序”模式之前上传到 Arduino。如果没有,double-click 重置按钮并重试。

我把这个留在这里让其他人找到一种方法来打开他们的 Arduinos。我敢肯定这是第一次学习AVR编程的程序员很容易犯的错误。

Arduino 框架提供了它自己的 main 来执行一些初始化,例如调用 USBDevice.attach。您提供自己的主要功能,因此您负责一切,包括 USB 和其他 Arduino 核心初始化。

或者,使用 setup() 和 loop() 程序编写 Arduino 草图,以便您可以继续使用 Arduino 提供的功能。您仍然可以使用较低级别的 avr-libc 功能并直接操作硬件寄存器。

或者干脆离开 Arduino,那就没有歧义了——你必须提供一切。但是 Micro 不太适合这个,如果你想使用 USB 引导加载程序则不行。除非,如您所述,您通过硬重置序列触发引导加载程序。