Electron TX Input_PULLUP

I am trying to pull the TX pin on the Electron but it only pulls it up to 1volt or so. Other pins pull up to close to 3.3volts.

Does anyone know if this is a known issue for the TX pin?

How are you trying to do it and are you using Serial1.begin()?

Im not using Serial1.

pinMode(TX, INPUT_PULLUP);

As a side note, im using pinMode(RX, INPUT_PULLUP); and the RX pin pulls up to around 3.3v

That’s really weird. I was able to reproduce this on an Electron but not a Photon. Both running 0.7.0 and running this code:

#include "Particle.h"

void setup() {
	Serial.begin(9600);
	pinMode(TX, INPUT_PULLUP);
	pinMode(RX, INPUT_PULLUP);
}

void loop() {
}

RX is near 3.3V on both devices.

Electron TX is around 1V.
Photon TX is around 3.3V.

Weird!

Thanks for verifiing! This then appears to be a software of hardware bug or a limitation to this pin.

I am wonder if this could also correlate to excess power consumption during sleep. I’ve been having troubles getting my e0 down under 1mA. Maybe this could be causing something. Just a thought.

The most common problem for getting into really low power modes is the weird edge cases where you can fail to go into SLEEP_MODE_DEEP. This post explains what works and what doesn’t:

Also, you may know this already, but it’s really tricky to measure sleep mode currents with an inexpensive DMM. This explains why and how to work around it:

I’ll move my comments to this thread about the battery and sleep.

Could you try calling Serial1.end() before setting pinMode()?
Maybe Serial1 gets enabled by “accident” along with enabling the serial interface used for the radio module.

I just tried the below code and the TX voltage still measures at 1.13V

#include "application.h"


SYSTEM_THREAD(ENABLED);
SYSTEM_MODE(SEMI_AUTOMATIC);

void setup() {
  Serial1.end();
  pinMode(TX, INPUT_PULLUP);
  pinMode(RX, INPUT_PULLUP);
  Cellular.on();
  delay(3000);
  Cellular.off();
  delay(2000);
  System.sleep(SLEEP_MODE_DEEP, 20);
}

void loop() {

}

Hi @rickkas7 can you try to confrim this on a P1 too. I am only getting 1v on the P1 too.

As a hack and since I have a small (1000pF) capacitor and mechanical switch on the line, the below code functions.

pinMode(TX, OUTPUT);
digitalWrite(TX, HIGH); //Charges the capacitor to 3.3v
pinMode(TX, INPUT_PULLUP); //changes pin to input to read
digitalRead(TX);