Чому запуск послідовного монітора перезавантажує ескіз?


31

Якщо я завантажую будь-який ескіз, який надсилає серійні дані, я відразу бачу, як світлодіоди TX / RX миготять, коли ескіз завантажений. Якщо я потім запускаю послідовний монітор, ескіз, як видається, перезапуститься.

Голий мінімальний ескіз, який показує таку поведінку:

void setup()
{
    Serial.begin(9600);
    Serial.println("Setup");
}

void loop()
{
  Serial.println("Loop");
  delay(1000);
}

Тестовано з кількома дошками та версіями IDE для Mac та Windows.

Приклад виводу - він повертається до "Налаштування", коли я відкриваю послідовний монітор:

Перезапустити

Чому це?


5
Я ніколи не бачив ескізу, який використовує серіал, не роби цього, тому буквально будь-який ескіз.
Кібергіббони



У мене окрема проблема. Леодік Arduino (та інші) більше не встановлюються автоматично. Як я можу переймати його?
CMCDragonkai

Відповіді:


33

Arduino використовує сигнали RTS (Request To Send) (і я думаю, DTR (Data Terminal Ready) ) для автоматичного скидання. Якщо ви отримаєте послідовний термінал, який дозволяє змінювати налаштування контролю потоку, ви можете змінити цю функціональність.

Термінал Arduino не дає вам багато варіантів, і це за замовчуванням. Інші дозволять вам налаштувати набагато більше. Якщо встановити регулятор потоку нічим, ви не зможете підключити / відключити послідовне з'єднання без скидання плати. це досить корисно для налагодження, коли ви хочете мати можливість просто підключити роз'єм і побачити вихід без необхідності запускати ескіз.

Інший спосіб відключення автоматичного скидання - поставити підтягуючий резистор на штифт скидання.

Відключення автоматичного скидання при послідовному підключенні


2
Arduino Unos можна зафіксувати за допомогою конденсатора 10 мкФ через RESET та GND. Він працює для однієї установки, для якої я його раніше використовував ...
scruss

1
Я спробував використовувати PuTTY , підключившись до COM-порту, на якому з'являється Arduino (у моєму випадку COM16). Він все одно скидає Arduino, якщо для параметра "Потік управління" у підключенні / послідовності встановлено значення "Жодне" (інші параметри - "XON / XOFF", "RTS / CTS" та "DSR / DTR"). Я використовував версію 0,60 PuTTY.
Пітер Мортенсен

-cont: Це було випробувано на Arduino Uno R3.
Пітер Мортенсен

У Duemilanove та Uno є слід із позначкою "EN RESET", який контролює таку поведінку. Викресліть цей слід, щоб вимкнути автоматичне скидання. Припаяйте дріт через колодки, щоб знову ввімкнути його.
mhopeng

12

Істина завжди є у таблицях, схемах та коді:

Arduino UNO фактично використовує /DTRлінію для запуску скидання, як ви бачите на наступному аркуші даних:

скинути схематично


Посилання на ваше схематичне зображення порушено.
linhartr22

1
Дякую, я це виправив! Насправді я думав, що SO кешує зображення, але схоже, що це не так, тому я обов'язково триматиму це завжди.
змо

Знову зламано. Можливо, ви можете додати його як зображення, використовуючи опцію imgur StackExchange? Просто натисніть на параметр "зображення" на панелі інструментів редактора.

зроблено, спасибі за підказку (я фактично мав свій власний сайт 10 днів, тому що я займався деяким обслуговуванням, що було тимчасово)
zmo

1
Так, але що насправді відбувається? Це пов'язано з тим, як програмується ATmega16U2 (стверджуючи PD7 низьким, коли COM-порт відкривається програмою?)? Або слідування якомусь стандарту для DTR?). А що означає С5? - чи буде скинутий основний процесор для обох переходів (низький до високого та високий до низького)? Яка орієнтовна ширина імпульсу (у мікросекундах) на штирі скидання основного процесора і як він виглядає?
Пітер Мортенсен

1

Це вирішує проблему

import os
import sys
import termios
import fcntl

        self.fd = sys.stdin.fileno()

        # Stop resetting the arduino on serial connect

        self.newattr = termios.tcgetattr(self.fd)
        self.newattr[2] = self.newattr[2] & ~termios.HUPCL
        termios.tcsetattr(self.fd, termios.TCSANOW, self.newattr)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.