सीरियल मॉनिटर शुरू करने से स्केच को फिर से क्यों शुरू किया जाता है?


31

अगर मैं कोई भी स्केच अपलोड करता हूं जो सीरियल डेटा भेजता है, तो स्केच अपलोड होने के तुरंत बाद मुझे TX / RX LED फ्लैश दिखाई देता है। यदि मैं तब सीरियल मॉनिटर शुरू करता हूं, तो स्केच पुनः आरंभ होता है।

एक नंगे न्यूनतम स्केच जो इस व्यवहार को दिखाता है:

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

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

आईडीई के कई बोर्डों और मैक और विंडोज संस्करणों के साथ परीक्षण किया गया।

उदाहरण आउटपुट - जब मैं धारावाहिक मॉनिटर खोलता हूं तो यह "सेटअप" पर वापस चला जाता है:

पुनः आरंभ करें

ऐसा क्यों है?


5
मैंने कभी ऐसा स्केच नहीं देखा है जो धारावाहिक का उपयोग करता है ऐसा नहीं करता है, इसलिए शाब्दिक रूप से कोई भी स्केच।
Cybergibbons



मुझे एक अलग समस्या है। Arduino लिओस्टिक (और अन्य) अब ऑटोरेसेट नहीं करते हैं। मैं इसे कैसे त्याग सकता हूं?
CMCDragonkai

जवाबों:


33

Arduino RTS (रिक्वेस्ट टू सेंड) (और मुझे लगता है कि DTR (डेटा टर्मिनल रेडी) ) ऑटो-रीसेट करने के लिए संकेतों का उपयोग करता है। यदि आपको एक सीरियल टर्मिनल मिलता है जो आपको फ्लो कंट्रोल सेटिंग्स बदलने की अनुमति देता है तो आप इस कार्यक्षमता को बदल सकते हैं।

Arduino टर्मिनल आपको बहुत सारे विकल्प नहीं देता है और यही डिफ़ॉल्ट है। अन्य आपको बहुत अधिक कॉन्फ़िगर करने की अनुमति देंगे। प्रवाह नियंत्रण स्थापित करने से कोई भी आपको अपने बोर्ड को रीसेट किए बिना धारावाहिक से कनेक्ट / डिस्कनेक्ट करने की अनुमति देगा। यह डिबगिंग के लिए काफी उपयोगी है जब आप कनेक्टर में बस प्लग करने में सक्षम होना चाहते हैं और स्केच को शुरू करने के बिना आउटपुट को देखते हैं।

ऑटो रीसेट को अक्षम करने का एक अन्य तरीका रीसेट पिन पर एक पुल अप रोकनेवाला है।

सीरियल कनेक्शन पर ऑटो रीसेट को अक्षम करना


2
Arduino Unos को RESET और GND में 10 inoF कैपेसिटर के साथ तय किया जा सकता है। यह एक संस्थापन के लिए काम करता है जिसका मैंने अभी तक उपयोग किया है ...
स्क्रू

1
मैंने PuTTY का उपयोग करने की कोशिश की , COM पोर्ट से जुड़ने पर Arduino (COM16 मेरे मामले में) दिखाई देता है। यह अभी भी Arduino को रीसेट कर रहा है यदि कनेक्शन / सीरियल में "फ्लो कंट्रोल" "कोई नहीं" पर सेट है (अन्य विकल्प "XON / XOFF", "RTS / CTS", और "DSR / DTR") हैं। मैंने PuTTY के संस्करण 0.60 का उपयोग किया।
पीटर मोर्टेंसन

-cont: यह एक Arduino Uno R3 पर आजमाया गया था।
पीटर मोर्टेंसन

ड्यूमिलानोव और ऊनो में "एन RESET" नाम का एक निशान होता है जो इस व्यवहार को नियंत्रित करता है। ऑटो-रीसेट को अक्षम करने के लिए उस निशान को स्क्रैच करें। इसे फिर से सक्षम करने के लिए पैड के पार एक तार मिलाएं।
मोपेंग

12

सच्चाई हमेशा डेटाशीट, स्कीमैटिक्स और कोड में होती है:

Arduino UNO वास्तव में /DTRरीसेट को ट्रिगर करने के लिए लाइन का उपयोग करता है , जैसा कि आप निम्नलिखित डेटाशीट पर देख सकते हैं:

योजनाबद्ध रीसेट करें


आपकी योजनाबद्ध छवि का लिंक टूट गया है।
linhartr22

1
धन्यवाद, मैंने इसे ठीक किया! मैंने वास्तव में सोचा था कि SO छवियों को कैशिंग कर रहा था, लेकिन ऐसा लगता है कि ऐसा नहीं है, इसलिए मैं इसे हमेशा चालू रखना सुनिश्चित करूंगा।
zmo

फिर से, यह टूट गया है। शायद आप इसे StackExchange के imgur विकल्प का उपयोग करके एक छवि के रूप में जोड़ सकते हैं? बस संपादक के टूलबार में 'छवि' विकल्प पर क्लिक करें।

किया, टिप के लिए धन्यवाद (मैं वास्तव में मेरी अपनी साइट 10 दिनों के लिए नीचे था क्योंकि मैं कुछ रखरखाव कर रहा था, जो सिर्फ अस्थायी था)
zmo

1
हां, लेकिन वास्तव में क्या होता है? यह जिस तरह से ATmega16U2 क्रमादेशित है (PD7 कम है जब एक COM पोर्ट एक प्रोग्राम द्वारा है?) प्रोग्रामर के कारण है? या डीटीआर के लिए कुछ मानक का पालन?)। और C5 का निहितार्थ क्या है? - क्या यह दोनों बदलावों के लिए मुख्य प्रोसेसर को रीसेट करेगा (निम्न से उच्च और उच्च से निम्न)? मुख्य प्रोसेसर के रीसेट पिन पर अनुमानित पल्स चौड़ाई (माइक्रोसेकंड में) क्या है और यह कैसा दिखता है?
पीटर मोर्टेंसन

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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.