Arduino serial communication RX high

1

Estoy intentando establecer una interfaz con un dispositivo a través de una serie asíncrona. Aquí está el requisito de alimentación de la hoja de datos del dispositivo:

  

Requisitos de reinicio de encendido   Al aplicar energía al DNT900, el Pin 39 / RESET y el Pin 31 RADIO_TXD deben estar inicialmente   mantenido bajo. El pin / RESET debe mantenerse bajo hasta que la tensión de la fuente de alimentación alcance 3.3 voltios por 100 ms.   y luego establecer alto. El RADIO_TXD se debe mantener bajo durante 10 ms adicionales después de que se active el pin / RESET   alto. RADIO_TXD se tira débilmente hacia abajo con una resistencia de 100K ohmios para cumplir con el requisito de reinicio de encendido, a menos que esta línea sea impulsada por una señal externa.

La serie de hardware en mi arduino (pines 1 y amp; 2) tiene un RX alto, por lo que no cumple con los requisitos de encendido del dispositivo. El dispositivo entra en modo de cargador de arranque y no se puede utilizar.

La única solución que encontré es usar SoftwareSerial y comentar dos líneas de código en la rutina de inicio de RX:

void SoftwareSerial::setRX(uint8_t rx)
{
  pinMode(rx, INPUT);
  //if (!_inverse_logic)
  //  digitalWrite(rx, HIGH);  // pullup for normal logic!
  _receivePin = rx;
  _receiveBitMask = digitalPinToBitMask(rx);
  uint8_t port = digitalPinToPort(rx);
  _receivePortRegister = portInputRegister(port);
}

Esto parece funcionar, pero ¿hay una mejor manera? ¿Hay alguna solución en hardware en lugar de software? Estoy buscando la solución más robusta y confiable para que el dispositivo no entre en el modo de cargador de arranque y deje de funcionar como se esperaba.

Gracias.

    
pregunta sinaptik

1 respuesta

2

debería poder manipular el pin con DigitalWrite, ANTES de iniciar la instancia de SoftwareSerial en ese pin. Si desea utilizar el puerto serie del hardware, es posible que tenga que agregar lógica externa a Y el pin serial del hardware con otro de los pines digitales de Arduinos y luego puede anular durante los primeros 100 ms aproximadamente, con una escritura digital al pin de anulación. tiene sentido?

    
respondido por el Andyz Smith

Lea otras preguntas en las etiquetas