El dispositivo digispark serie bidireccional (semidúplex de un cable) funciona sin embargo se responde a sí mismo

0

Seguí esta guía para crear un dispositivo bidireccional (depuración) de un cable para un Digispark (Attiny85):

enlace (consulte la sección Depuración en serie bidireccional con una sola E / S) o vea el esquema en el código fuente abajo:

/*
  https://digistump.com/wiki/digispark/tutorials/debugging

                        SERIAL SINGLE I/O
                         DEBUGGING CABLE
            ___________________/\__________________
           /                                       \
                                              ____
 .--------.                                  |    \
 |    GND |--------------------------------+---o5  \
 |        |                           47K  | |   9o |
 |        |                        .--###--' | o4   |
 |  DEBUG |                  4.7K  |         |   8o |
 |  TX_RX |-------------------###--+--|<|------o3   |    ---> To regular RS232 SubD 9 pins Male of PC
 |   PIN  |        ^               | 1N4148  |   7o |         or to RS232/USB adapter
 |        |        |               '-----------o2   |         Connector PIN 2: RX (receive) 
 '--------'        |                         |   6o |         Connector PIN 3: TX (transmit)
  ATtiny85       Single                      | o1  /
 (Digispark)      I/O                        |____/
                                          SubD 9 pins
                                            Female


 Note:

    Trick to be less intrusive: use a �high� data rate (38400 is fine)
      -> less time wasted in ISR and for transmitting each character.
    You can still upload your sketch modifications through the USB interface
    whilst the additionnal serial port is selected as Serial port in the IDE.

*/


#include <TinyPinChange.h>
#include "SoftSerial.h"

#define DEBUG_TX_RX_PIN         3 //Adjust here your Tx/Rx debug pin

SoftSerial MyDbgSerial(DEBUG_TX_RX_PIN, DEBUG_TX_RX_PIN, true); //true allows to connect to a regular RS232 without RS232 line driver

void setup()
{
  MyDbgSerial.begin(9600); //After MyDbgSerial.begin(), the serial port is in rxMode by default
  MyDbgSerial.txMode(); //Before sending a message, switch to txMode
  MyDbgSerial.println(F("\nDebug enabled"));
  MyDbgSerial.rxMode(); //switch to rxMode to be ready to receive some commands
}

void loop()
{
  if(MyDbgSerial.available())
  {
    MyDbgSerial.txMode();
    MyDbgSerial.print(F("\nReceived: "));MyDbgSerial.write(MyDbgSerial.read());MyDbgSerial.print(F("\n"));
    MyDbgSerial.rxMode();
  }
}

El 'dispositivo' que creé se parece a esto:

Hagadobleclicenestepinoutparaasegurarse(hembra->masculino):

El'dispositivo'funcionaperosecontesta,hayalgomal(¿esquema?).Porejemplo:cuandoingresas"hola" en el monitor serie, responde directamente con el mismo "hola" también sin un Digispark conectado / conectado. Cuando Digispark está conectado / conectado, el Digispark parece no recibir nada.

Entonces, ¿qué podría estar mal, es correcto el esquema?

    
pregunta Codebeat

2 respuestas

0

Basado en ese esquema, así es exactamente cómo reaccionará en el programa de la consola de su PC con o sin algo conectado en el otro extremo. Ataste el tx al rx, esencialmente un dispositivo de bucle. Ignora el "eco".

En cuanto a que su Digispark no responde, ¿ha configurado la consola a la velocidad y paridad correctas y la configuración de parada?

    
respondido por el Passerby
0

es posible que desee considerar esto en su lugar. ...........

La Tx / Rx de la izquierda está en bucle. La Tx Rx de la derecha está aislada para que no haya loopback.

Utilice un par trenzado entre los dos puertos, ya que el ruido en modo común puede ser un problema para atar a tierra.

    
respondido por el Tony EE rocketscientist

Lea otras preguntas en las etiquetas