¿Por qué al iniciar el monitor en serie se reinicia el boceto?


31

Si subo cualquier boceto que envíe datos en serie, inmediatamente veo que los LED TX / RX parpadean una vez que se carga el boceto. Si luego inicio el monitor en serie, el boceto parece reiniciarse.

Un boceto mínimo que muestra este comportamiento:

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

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

Probado con varias placas y versiones para Mac y Windows del IDE.

Salida de ejemplo: vuelve a "Configuración" cuando abro el monitor en serie:

Reiniciar

¿Por qué es esto?


55
Nunca he visto un boceto que use serial no lo hace, así que literalmente cualquier boceto.
Cybergibbons



Tengo un problema aparte. El leostick Arduino (y otros) ya no se configuran automáticamente. ¿Cómo lo renombro?
CMCDragonkai

Respuestas:


33

El Arduino usa las señales RTS (Solicitud de envío) (y creo que DTR (Listo para terminal de datos) ) para reiniciar automáticamente. Si obtiene un terminal en serie que le permite cambiar la configuración de control de flujo, puede cambiar esta funcionalidad.

El terminal Arduino no te da muchas opciones y ese es el valor predeterminado. Otros le permitirán configurar mucho más. Establecer el control de flujo en ninguno le permitirá conectarse / desconectarse de la serie sin reiniciar su placa. es bastante útil para la depuración cuando desea poder enchufar el conector y ver la salida sin tener que comenzar de nuevo el boceto.

Otra forma de deshabilitar el reinicio automático es colocar una resistencia pull-up en el pin de reinicio.

Deshabilitar el reinicio automático en la conexión en serie


2
Arduino Unos se puede arreglar con un condensador de 10 µF a través de RESET y GND. Funciona para la única instalación para la que lo he usado, hasta ahora ...
scruss

1
Intenté usar PuTTY , conectándome al puerto COM en el que aparece el Arduino (COM16 en mi caso). Todavía está restableciendo el Arduino si "Control de flujo" en Conexión / Serie está configurado en "Ninguno" (las otras opciones son "XON / XOFF", "RTS / CTS" y "DSR / DTR"). Usé la versión 0.60 de PuTTY.
Peter Mortensen

-cont: Fue probado en un Arduino Uno R3.
Peter Mortensen el

Duemilanove y Uno tienen una traza etiquetada "EN RESET" que controla este comportamiento. Raspe ese rastro para deshabilitar el reinicio automático. Suelde un cable a través de las almohadillas para volver a habilitarlo.
mhopeng

12

La verdad siempre está en las hojas de datos, los esquemas y el código:

El Arduino UNO en realidad usa la /DTRlínea para activar un reinicio, como puede ver en la siguiente hoja de datos:

reiniciar esquema


El enlace a su imagen esquemática está roto.
linhartr22

1
Gracias, lo arreglé! De hecho, pensé que SO estaba almacenando imágenes en caché, pero parece que no lo es, así que me aseguraré de mantenerlo siempre encendido.
zmo

De nuevo, está roto. ¿Quizás pueda agregarlo como una imagen usando la opción imgur de StackExchange? Simplemente haga clic en la opción 'imagen' en la barra de herramientas del editor.

hecho, gracias por el consejo (en realidad tuve mi propio sitio fuera de servicio durante 10 días porque estaba haciendo algo de mantenimiento, que era solo temporal)
zmo

1
Sí, pero ¿qué pasa realmente? ¿Se debe a la forma en que se programa el ATmega16U2 (afirmando que PD7 está bajo cuando un programa abre un puerto COM)? ¿O siguiendo algún estándar para DTR?). ¿Y cuál es la implicación de C5? - ¿restablecerá el procesador principal para ambas transiciones (de menor a mayor y de mayor a menor)? ¿Cuál es el ancho de pulso aproximado (en microsegundos) en el pin de reinicio del procesador principal y cómo se ve?
Peter Mortensen

1

Esto soluciona el problema.

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)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.