I'm trying to interface with a device via async serial. Here is the power on requirement from the device datasheet:
Power-On Reset Requirements When applying power to the DNT900, the /RESET Pin 39 and the RADIO_TXD Pin 31 must be initially held low. The /RESET pin must be held low until the power supply voltage reaches 3.3 volts for 100 ms, and then set high. The RADIO_TXD must be held low an additional 10 ms after the /RESET pin goes high. RADIO_TXD is weakly pulled down with a 100K ohm resistor to meet the power-on reset requirement, unless this line is driven high by an external signal.
The hardware serial on my arduino (pins 1 & 2) is pulling RX high, thus not meeting the power on requirement of the device. The device goes into bootloader mode and is unusable.
The one solution I have found is using SoftwareSerial, and commenting out two lines of code in the RX init routine:
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);
}
This seems to work, but is there a better way? Is there a solution in hardware instead of software? I'm looking for the most robust and reliable solution so that the device does not go into bootloader mode and cease functioning as expected.
Thanks.