Micro Pro не восстанавливает соединение с компом

Тема в разделе "Arduino & Shields", создана пользователем Tomasina, 19 фев 2015.

  1. Tomasina

    Tomasina Сушитель лампочек Модератор

    Использую Arduino Micro Pro (определяется в системе как Leonardo). Сразу после прошивки все работает замечательно, данные по Serial передаются. Но после перевтыкания USB или выкл/вкл питания связь с компом теряется, COM порт просто пропадает насовсем (до следующей прошивки).
    В вики в описании Leonardo сказано:
    • При сбросе микроконтроллера его соединение с компьютером теряется и поднимается заново. Это усложняет процесс прошивки, но не должно являться особой проблемой, т.к. Arduino IDE поддерживает этот процесс.
    Но обратно то оно не восстанавливается.
    Просьба проверить так ли это, или где-то у меня косяк?
     
  2. Tomasina

    Tomasina Сушитель лампочек Модератор

    М-да, это не лечится, это особенность эмуляции COM на ATmega32u4. Будем переходить на другую ATmega.

    P.S. Может кому нужна Arduino Pro Micro?
     
  3. Alex19

    Alex19 Гуру

    Достал свою Leonardo (ATmega32u4), у меня официальная, не использую именно из-за капризного COM порта.

    Подключил, открыл Arduino IDE залил, все ок, COM порт 31, после переподключения COM порт становится 30. Но залить новый скетч не возможно.

    Как решается у меня, не отключая Leonardo, закрываю все окна Arduino IDE, после чего заново открываю Arduino IDE. Leonardo уже определяется на 31 COM порту и мы снова можем заливать Leonardo.

    Стоит отключить, все по кругу.

    UPD. Arduino IDE 1.0.6
     
  4. Tomasina

    Tomasina Сушитель лампочек Модератор

    во-во. Номер порта меняется. Цель была такая - МК мониторит показания и выводит в COM-порт в некую программу (не IDE), и каждый раз выбирать в ней новый номер порта - не вариант.
    Буду Nano Pro использовать, там USB аппаратный.
     
  5. Alex19

    Alex19 Гуру

    Не совсем так, номер порта меняется, но залить на него нельзя. А при закрытии Arduino IDE и последующем открытии он возвращается, после чего можно залить скетч.

    Стало любопытно, после обеда гляну, сделаю программку на C#. Определить порт, не составляет проблем, можно перебором + отправка, а при получении слать команду "я тебя нашел" и переводить программу в рабочий режим, для Windows можно через WMI и т.д.

    С ним, все куда более проще и возможностей значительно больше.
     
  6. Alex19

    Alex19 Гуру

    Нашел, свой старый тестовый проект, на базе найденного в сети, немного изменив
    Да однажды, он поменялся. Но только один раз, не могу говорить о закономерности.

    Код ардуины
    Код (Text):

    /* Blink without Delay */
    const int ledPin =  13;
    int ledState = LOW;
    unsigned long previousMillis = 0;
    const long interval = 1000;

    void setup() {
      pinMode(ledPin, OUTPUT);
      Serial.begin(9600);
    }

    void loop()
    {
      unsigned long currentMillis = millis();

      if(currentMillis - previousMillis >= interval) {
        previousMillis = currentMillis;
        if (ledState == LOW)
          ledState = HIGH;
        else
          ledState = LOW;

        digitalWrite(ledPin, ledState);
        Serial.println("Hello!");
      }
    }
     
    Код C# вставил в прищепку + приложение (определение порта WMI), требует .Net 4.0 или выше. Использовать Leonardo можно, просто надо учитывать ее особенности.
     

    Вложения:

    • Serial Talk.zip
      Размер файла:
      13,7 КБ
      Просмотров:
      513
  7. Мои 5 копеек.
    Точнее pro micro (в миру - Леонардо).
    1. Залил скетч мигания с периодом 1 секунда. Мигает.
    2. Все выключил, от USB отключил и снова включил. Мигает с периодом 8 секунд.
    Наткнулся на обсуждение программного RESET в Ардуино и попробовал принцип Альтшулера: послушай женщину и сделай наоборот.
    Сделал наоборот: наплевал на программный сигнал и припаял с RESET на землю 0,5 мкФ, т.е. аппаратный сброс при включении питания..
    Все заработало. Пока работает.