Почему запуск серийного монитора перезапускает эскиз?

Если я загружу любой эскиз, который отправляет последовательные данные, я сразу вижу, как светодиоды TX /RX мигают после загрузки эскиза. Если я запустил последовательный монитор, эскиз, похоже, перезагрузится.

Голый минимальный эскиз, который показывает это поведение:

void setup ()
{
    Serial.begin (9600);
    Serial.println ( "Настройка");
}

void loop ()
{
  Serial.println ( "петля");
  Задержка (1000);
}

Протестировано несколькими платами и версиями IDE для Mac и Windows.

Пример вывода - он возвращается к «Setup» при открытии последовательного монитора:

Restart

Почему это?

26 голосов | спросил Cybergibbons 26 FebruaryEurope/MoscowbWed, 26 Feb 2014 02:51:03 +0400000000amWed, 26 Feb 2014 02:51:03 +040014 2014, 02:51:03

3 ответа


32

Arduino использует RTS (запрос на отправку) (и я думаю, < a href = "http://en.wikipedia.org/wiki/Data_Terminal_Ready"> DTR (готовность к работе с данными) ) для автоматического перезапуска. Если вы получаете последовательный терминал, который позволяет изменять настройки управления потоком, вы можете изменить эту функциональность.

Терминал Arduino не дает вам много вариантов, и это значение по умолчанию. Другие позволят вам настроить намного больше. Установка контроля потока на none позволит вам подключиться /отключиться от последовательного устройства без сброса платы. это очень полезно для отладки, когда вы хотите просто подключить разъем и посмотреть вывод без необходимости запуска эскиза.

Еще один способ отключить автоматический сброс - установить резистор вытягивания на контакт сброса.

Отключение автоматического сброса в последовательном подключении

ответил sachleen 26 FebruaryEurope/MoscowbWed, 26 Feb 2014 04:02:20 +0400000000amWed, 26 Feb 2014 04:02:20 +040014 2014, 04:02:20
12

Истина всегда находится в таблицах данных, схемах и коде:

Arduino UNO фактически использует строку /DTR, чтобы инициировать сброс, как вы можете видеть на следующем техническом паспорте:

 reset schematic

ответил zmo 2 MaramSun, 02 Mar 2014 02:24:12 +04002014-03-02T02:24:12+04:0002 2014, 02:24:12
0

Это устраняет проблему

import os
import sys
условия импорта
import fcntl

        self.fd = sys.stdin.fileno ()

        # Остановить сброс arduino при последовательном подключении

        self.newattr = termios.tcgetattr (self.fd)
        self.newattr [2] = self.newattr [2] & ~ termios.HUPCL
        termios.tcsetattr (self.fd, termios.TCSANOW, self.newattr)
ответил Julian Lewis 13 Maypm16 2016, 21:17:17

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132