Tại sao bắt đầu màn hình nối tiếp khởi động lại bản phác thảo?


31

Nếu tôi tải lên bất kỳ bản phác thảo nào gửi dữ liệu nối tiếp, tôi sẽ thấy ngay đèn LED TX / RX nhấp nháy khi bản phác thảo được tải lên. Nếu sau đó tôi khởi động màn hình nối tiếp, bản phác thảo sẽ xuất hiện để khởi động lại.

Một bản phác thảo tối thiểu cho thấy hành vi này:

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

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

Đã thử nghiệm với một số bo mạch và phiên bản Mac và Windows của IDE.

Ví dụ đầu ra - nó quay trở lại "Cài đặt" khi tôi mở màn hình nối tiếp:

Khởi động lại

Tại sao lại thế này?


5
Tôi chưa bao giờ thấy một bản phác thảo sử dụng nối tiếp không làm điều này, vì vậy nghĩa đen là bất kỳ bản phác thảo nào.
Cyberg Ribbon



Tôi đã có một vấn đề riêng. Arduino leostick (và những người khác) không còn tự động nữa. Làm thế nào để tôi có thể đổi tên nó?
CMCDragonkai

Câu trả lời:


33

Arduino sử dụng tín hiệu RTS (Request To Send) (và tôi nghĩ DTR (Data Terminal Ready) ) để tự động đặt lại. Nếu bạn nhận được một thiết bị đầu cuối nối tiếp cho phép bạn thay đổi cài đặt kiểm soát luồng, bạn có thể thay đổi chức năng này.

Thiết bị đầu cuối Arduino không cung cấp cho bạn nhiều tùy chọn và đó là mặc định. Những người khác sẽ cho phép bạn cấu hình nhiều hơn nữa. Đặt điều khiển luồng thành không sẽ cho phép bạn kết nối / ngắt kết nối khỏi nối tiếp mà không cần đặt lại bảng của bạn. Nó khá hữu ích để gỡ lỗi khi bạn muốn có thể chỉ cần cắm vào trình kết nối và xem đầu ra mà không phải bắt đầu phác thảo.

Một cách khác để vô hiệu hóa thiết lập lại tự động là đặt điện trở kéo lên trên chân thiết lập lại.

Vô hiệu hóa tự động thiết lập lại trên kết nối nối tiếp


2
Arduino Unos có thể được cố định với một tụ 10 10FF trên RESET và GND. Nó hoạt động cho một bản cài đặt mà tôi đã sử dụng cho đến nay, cho đến nay
hãy xem lại

1
Tôi đã thử sử dụng PuTTY , kết nối với cổng COM mà Arduino xuất hiện tại (COM16 trong trường hợp của tôi). Nó vẫn đặt lại Arduino nếu "Điều khiển luồng" trong Kết nối / Nối tiếp được đặt thành "Không" (các tùy chọn khác là "XON / XOFF", "RTS / CTS" và "DSR / DTR"). Tôi đã sử dụng phiên bản 0.60 của PuTTY.
Peter Mortensen

-cont: Nó đã được thử trên Arduino Uno R3.
Peter Mortensen

Duemilanove và Uno có một dấu vết có nhãn "EN RESET" kiểm soát hành vi này. Cào bỏ dấu vết đó để vô hiệu hóa tự động thiết lập lại. Hàn một dây trên các miếng đệm để kích hoạt lại nó.
mhopeng

12

Sự thật luôn có trong bảng dữ liệu, sơ đồ và mã:

Arduino UNO thực sự sử dụng /DTRdòng để kích hoạt thiết lập lại, như bạn có thể thấy trên biểu dữ liệu sau:

thiết lập lại sơ đồ


Liên kết đến hình ảnh sơ đồ của bạn bị hỏng.
linhartr22

1
Cảm ơn bạn, tôi đã sửa nó! Tôi thực sự nghĩ rằng SO đang lưu trữ hình ảnh, nhưng có vẻ như không phải vậy, vì vậy tôi chắc chắn sẽ luôn giữ nó.
zmo

Một lần nữa, nó bị hỏng. Có lẽ bạn có thể thêm nó dưới dạng hình ảnh bằng tùy chọn imgur của StackExchange? Chỉ cần nhấp vào tùy chọn 'hình ảnh' trên thanh công cụ của trình chỉnh sửa.

xong, cảm ơn vì tiền boa (tôi thực sự đã có trang web của riêng mình trong 10 ngày vì tôi đang thực hiện một số bảo trì, chỉ là tạm thời)
zmo

1
Vâng, nhưng những gì thực sự xảy ra? Có phải do cách ATmega16U2 được lập trình (khẳng định PD7 thấp khi cổng COM được mở bởi một chương trình?)? Hoặc theo một số tiêu chuẩn cho DTR?). Và ý nghĩa của C5 là gì? - nó sẽ thiết lập lại bộ xử lý chính cho cả hai lần chuyển đổi (thấp đến cao & cao thành thấp)? Độ rộng xung gần đúng (tính bằng micro giây) trên chân thiết lập lại của bộ xử lý chính và nó trông như thế nào?
Peter Mortensen

1

Điều này khắc phục vấn đề

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)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.