Seri monitörün başlatılması neden çizimi yeniden başlatıyor?


31

Seri veri gönderen herhangi bir çizim yüklersem, çizim yüklendiğinde derhal TX / RX LED'lerinin yanıp söndüğünü görürüm. Seri monitörü daha sonra başlatırsam, taslak yeniden başlatılıyor gibi görünüyor.

Bu davranışı gösteren çıplak minimum taslak:

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

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

IDE'nin çeşitli panoları ve Mac ve Windows sürümleri ile test edilmiştir.

Örnek çıktı - seri monitörü açtığımda "Ayar" a dönüyor:

Tekrar başlat

Bu neden?


5
Bunu yapmayan seri kullanan bir çizim hiç görmedim, yani tam anlamıyla herhangi bir çizim.
Cybergibbons



Ayrı bir sorunum var. Arduino ruhu (ve diğerleri) artık otomatik olarak ayarlanmadı. Nasıl değiştirebilirim?
CMCDragonkai

Yanıtlar:


33

Arduino, otomatik sıfırlama için RTS (Gönderme İsteği) (ve sanırım DTR (Veri Terminali Hazır) ) sinyalleri kullanıyor. Akış kontrol ayarlarını değiştirmenize izin veren seri bir terminal elde ederseniz, bu işlevi değiştirebilirsiniz.

Arduino terminali size pek çok seçenek sunmuyor ve bu varsayılan. Diğerleri daha fazlasını yapılandırmanıza izin verecektir. Akış kontrolünü yok olarak ayarlamak, anakartınızı sıfırlamadan seriye bağlanma / bağlantıyı kesmenize olanak sağlar. Sadece konektörü takıp, taslağı yeniden başlatmak zorunda kalmadan çıktıyı görmek istediğinizde hata ayıklamak için oldukça kullanışlıdır.

Otomatik sıfırlamayı devre dışı bırakmanın başka bir yolu, sıfırlama pimine bir çekme direnci koymaktır.

Seri Bağlantıda Otomatik Sıfırlamayı Devre Dışı Bırakma


2
Arduino Unos, RESET ve GND'de 10 FF kapasitör ile sabitlenebilir. Şimdiye dek kullandığım kurulum için işe yarıyor…
scruss

1
Ben kullanarak çalıştı PuTTY Arduino (benim durumumda COM16) görünen COM limanına bağlantılar. Bağlantı / Seri'deki "Akış kontrolü", "Yok" olarak ayarlanmışsa Arduino'yu hala sıfırlar (diğer seçenekler "XON / XOFF", "RTS / CTS" ve "DSR / DTR" dir). PuTTY'nin 0.60 sürümünü kullandım.
Peter Mortensen,

-cont: Bir Arduino Uno R3 üzerinde denendi.
Peter Mortensen,

Duemilanove ve Uno, bu davranışı kontrol eden "EN RESET" etiketli bir ize sahiptir. Otomatik sıfırlamayı devre dışı bırakmak için bu izi kazıyın. Tekrar etkinleştirmek için pedler boyunca bir tel lehimleyin.
mhopeng

12

Gerçek her zaman veri sayfalarında, şemalarda ve koddadır:

Arduino UNO, aslında /DTRaşağıdaki veri sayfasında görebileceğiniz gibi, sıfırlamayı tetiklemek için satırı kullanır :

şemayı sıfırla


Şematik görüntünüze olan bağlantı koptu.
linhartr22

1
Teşekkürler, tamir ettim! Aslında SO'nun görüntüleri önbelleğe aldığını düşündüm, ancak görünmüyor gibi görünüyor, bu yüzden her zaman açık kalmasını sağlayacağım.
zmo

Yine, bozuldu. Belki de StackExchange'in imgur seçeneğini kullanarak görüntü olarak ekleyebilirsiniz. Editörün araç çubuğundaki 'görüntü' seçeneğini tıklamanız yeterlidir.

bahşiş için teşekkür ederim (aslında 10 günlüğüne kendi
sitemi kapattım

1
Evet, ama gerçekte ne oluyor? ATmega16U2'nin programlanma şekli nedeniyle mi (bir COM portu bir program tarafından açıldığında PD7'nin düşük olduğunu iddia etmek?)? Veya DTR için bazı standartlar takip ediliyor mu?). Ve C5'in anlamı nedir? - her iki geçiş için ana işlemciyi sıfırlar mı (düşükten yükseğe ve yüksekten düşüğe)? Ana işlemcinin sıfırlama pimindeki yaklaşık darbe genişliği (mikrosaniye cinsinden) nedir ve nasıl görünür?
Peter Mortensen

1

Bu sorunu düzeltir

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)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.