Запуск setup() при открытии порта или подключении USB

Тема в разделе "Arduino & Shields", создана пользователем KindMan, 4 янв 2013.

  1. KindMan

    KindMan Гуру

    Всех с Новым Годом!
    Просветите пожалуйста - имею плату Ideaduino 2.2
    Питается от внешнего источника. При подключении к компьютеру начинает снова запускать setup(), аналогичная история если открываю порт в любом терминале. Это так и должно быть или я чего то не понимаю? Видел тут на форуме человек мельком упоминал об этом, но больше нигде не нашёл информации об этой особенности.
     
  2. Unixon

    Unixon Оракул Модератор

    При открытии порта мост USB-UART (FT232RL) дергает сигнал DTR и сбрасывает им контроллер. Это сделано для возможности переводить контроллер в режим программирования через сброс и рестарт загрузчика. Есть различные способы обходить функцию автосброса, как со стороны ПК, так и со стороны Arduino.

    Если в Arduino IDE вы открываете "монитор порта", сброс тоже происходит?
     
  3. KindMan

    KindMan Гуру

    Да, происходит. Спасибо за информацию! Особо не напрягает эта особенность, просто надо быть внимательней при состовлении программы.
     
  4. Unixon

    Unixon Оракул Модератор

    Тут вот какое дело... На разных платах используются разные мосты, почти на всех новых ардуинах используется еще один контроллер AVR со встроенным портом USB типа ATmega8U2/ATmega16U2, а на Leonardo так и вовсе один единственный чип ATmega32U4 вместо двух. На таких платах я сброса при открытии встроенного в IDE терминала не наблюдал, при этом сброс перед прошивкой происходит нормально. Как ведут себя ардуины с мостами типа FT232 не знаю, у меня таких нет. Есть подозрение, что где-то этот автосброс обходится программно, либо на ПК, либо в прошивке моста.
     
  5. Irm

    Irm Нуб

    Вот что встретилось по этому поводу http://atroshin.ru/ru/content/avtomaticheskaya-perezagruzka-arduino-pri-podklyuchenii-terminala

    Сам воспользовался конденсатором 10 мкФ для Uno. Все получилось.
    Есть, правда, один нюанс. Сначала заливаем скетч, потом подключаем конденсатор. Иначе скетч не заливается.
     
  6. hulitolku

    hulitolku Нуб

    А как на NANO как устранить такую проблему?