ทำไมการเริ่มต้นมอนิเตอร์แบบอนุกรมเริ่มร่างใหม่


31

หากฉันอัปโหลดภาพร่างใด ๆ ที่ส่งข้อมูลอนุกรมฉันจะเห็นไฟแฟลช TX / RX ทันทีที่อัปโหลดภาพร่าง ถ้าฉันเริ่มการตรวจสอบแบบอนุกรมร่างจะปรากฏขึ้นเพื่อเริ่มต้นใหม่

ร่างขั้นต่ำเปลือยที่แสดงพฤติกรรมนี้:

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

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

ทดสอบกับบอร์ดหลายรุ่นรวมถึง IDE และ Mac และ Windows

ตัวอย่างผลลัพธ์ - มันกลับไปที่ "ตั้งค่า" เมื่อฉันเปิดมอนิเตอร์อนุกรม:

เริ่มต้นใหม่

ทำไมนี้


5
ฉันไม่เคยเห็นภาพร่างที่ใช้ซีเรียลไม่ได้ทำเช่นนี้ดังนั้นภาพร่างใด ๆ
Cybergibbons



ฉันมีปัญหาแยกกัน Arduino leostick (และอื่น ๆ ) ไม่ได้ทำการโหลดอัตโนมัติอีกต่อไป ฉันจะเปลี่ยนได้อย่างไร
CMCDragonkai

คำตอบ:


33

Arduino ใช้สัญญาณRTS (ขอให้ส่ง) (และฉันคิดว่าDTR (พร้อมขั้วข้อมูล) ) เพื่อรีเซ็ตอัตโนมัติ หากคุณได้รับเครื่องปลายทางที่ให้คุณเปลี่ยนการตั้งค่าการควบคุมการไหลคุณสามารถเปลี่ยนการทำงานนี้ได้

เทอร์มินัล Arduino ไม่ให้ตัวเลือกมากมายกับคุณและเป็นค่าเริ่มต้น คนอื่นจะช่วยให้คุณกำหนดค่ามากขึ้น การตั้งค่าการควบคุมการไหลเป็นไม่มีจะช่วยให้คุณสามารถเชื่อมต่อ / ตัดการเชื่อมต่อจากอนุกรมโดยไม่ต้องรีเซ็ตบอร์ดของคุณ มันค่อนข้างมีประโยชน์สำหรับการดีบั๊กเมื่อคุณต้องการเพียงแค่เสียบคอนเนคเตอร์และดูเอาต์พุตโดยไม่ต้องเริ่มสเก็ตช์

อีกวิธีในการปิดการใช้งานการรีเซ็ตอัตโนมัติคือการใส่ตัวต้านทานแบบดึงขึ้นบนพินการรีเซ็ต

ปิดใช้งานรีเซ็ตอัตโนมัติในการเชื่อมต่อแบบอนุกรม


2
Arduino Unos สามารถแก้ไขได้ด้วยตัวเก็บประจุ 10 µF ทั่ว RESET และ GND มันทำงานสำหรับการติดตั้งอย่างใดอย่างหนึ่งที่ผมเคยใช้มันเพื่อให้ห่างไกล ...
scruss

1
ฉันพยายามใช้PuTTYเชื่อมต่อกับพอร์ต COM ที่ Arduino ปรากฏที่ (COM16 ในกรณีของฉัน) มันยังคงรีเซ็ต Arduino หาก "การควบคุมการไหล" ในการเชื่อมต่อ / อนุกรมถูกตั้งค่าเป็น "ไม่มี" (ตัวเลือกอื่น ๆ คือ "XON / XOFF", "RTS / CTS" และ "DSR / DTR") ฉันใช้ PuTTY รุ่น 0.60
Peter Mortensen

-cont: มันถูกทดลองใน Arduino Uno R3
Peter Mortensen

Duemilanove และ Uno มีร่องรอยที่ระบุว่า "EN RESET" ซึ่งควบคุมพฤติกรรมนี้ ลบล้างการติดตามนั้นเพื่อปิดใช้งานการรีเซ็ตอัตโนมัติ บัดกรีสายไฟข้ามแผ่นอิเล็กโทรดเพื่อเปิดใช้งานอีกครั้ง
mhopeng

12

ความจริงมักอยู่ในแผ่นข้อมูลแผนงานและรหัส:

Arduino UNO ใช้/DTRสายเพื่อเรียกการรีเซ็ตตามที่คุณเห็นในแผ่นข้อมูลต่อไปนี้:

รีเซ็ตแผนผัง


ลิงก์ไปยังรูปภาพแผนผังของคุณใช้งานไม่ได้
linhartr22

1
ขอบคุณฉันแก้ไขมัน! จริง ๆ แล้วฉันคิดว่า SO กำลังแคชรูปภาพ แต่ดูเหมือนว่าไม่ใช่ดังนั้นฉันจะตรวจสอบให้แน่ใจเสมอ
zmo

อีกครั้งมันเสีย บางทีคุณสามารถเพิ่มเป็นรูปภาพโดยใช้ตัวเลือก imgur ของ StackExchange ได้หรือไม่ เพียงคลิกตัวเลือก 'รูปภาพ' ในแถบเครื่องมือของเครื่องมือแก้ไข

เสร็จแล้วขอบคุณสำหรับเคล็ดลับ (จริง ๆ แล้วฉันมีเว็บไซต์ของตัวเองลงเป็นเวลา 10 วันเพราะฉันกำลังบำรุงรักษาซึ่งเป็นเพียงชั่วคราว)
zmo

1
ใช่ แต่เกิดอะไรขึ้นจริง เป็นเพราะวิธีการตั้งโปรแกรม ATmega16U2 (ยืนยัน PD7 ต่ำเมื่อเปิดพอร์ต COM โดยโปรแกรมหรือไม่?) หรือทำตามมาตรฐานบางอย่างของ DTR?) และความหมายของ 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)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.