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.