Отсутствует последовательный порт в Arduino Pro Micro от SparkFun и Atmel Studio

#windows #serial-port #arduino #atmelstudio

#Windows #последовательный порт #arduino #atmelstudio

Вопрос:

Это тот же вопрос, который я опубликовал на форумах Arduino, так как здесь может быть кто-то, кто мог бы мне помочь 🙂 Я использую Arduino Pro Micro 3,3 В / 8 МГц от SparkFun для проекта. Я установил драйверы, добавил поддержку платы в IDE и попытался загрузить на нее эскиз — все работало нормально. Я понимаю, что загрузчик, поставляемый с платой, эмулирует отдельный последовательный порт для загрузки, поскольку обычный порт — COM5, а порт загрузки — COM6. Хотя для этого проекта оптимизация кода имеет первостепенное значение, поэтому я перешел к Atmel Studio, которую я уже успешно использовал с UNO. Я создал простой мигающий код для микро, используя регистры и функции:

 #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 amp;= ~(1 << ledpin);
        _delay_ms(1000);
    }
}
  

Я могу нормально загрузить его через Atmel Studio с помощью следующей команды в avrdude:

 C:Program Files (x86)Arduinohardware/tools/avr/bin/avrdude -C"C:Program Files (x86)Arduinohardware/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-guide/troubleshooting-and-faq#ts-reset).

Код работает, но теперь я замечаю, что обычный последовательный порт (COM5) никогда не возвращается. В чем может быть причина? Я все еще могу загрузить новый код на микро, поэтому загрузчик должен быть в порядке, верно?

Заранее спасибо за помощь 🙂

Ответ №1:

Я вроде как нашел решение. Как я писал на форумах Arduino:

Я смог вернуть pro micro в состояние, в котором он был доставлен мне SparkFun.

Для этого я использовал Arduino Uno в качестве провайдера (с примером Arduino Sp), подключенного к выводам MISO, MOSI, SCLK и RST Micro, и загрузил загрузчик через Arduino IDE. Сначала я получил сообщение об ошибке следующего содержания:

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

Затем я изучил, как установить биты предохранителей на Pro Micro, когда понял, что boards.txt определяет биты предохранителей, которые будут использоваться. Все, что мне нужно было сделать, это изменить «extended_fuses = 0xfe» на «extended_fuses = 0xce», перезапустить IDE и повторить попытку загрузки загрузчика. Наконец, успех!
Чтобы протестировать его, я написал простое приложение UART «Hello world» в IDE, которое работало безупречно.

При загрузке загрузчика убедитесь, что выбрана правильная плата (SparkFun 3,3 В / 8 МГц) и выберите COM-порт Arduino интернет-провайдера.