Boron Wakeup Pin at 1.8V

I am working on a project using Borons and I am running into an issue during what should be a wakeup event where the designated wakeup pin (D8) is at 1.8V and the Boron does not wakeup.

Device Description
In each device, there is a Boron that is powered in one of three ways: through a very large external battery that is regulated down to 5V and powering the Boron through the VUSB pin, through USB, or through a small Boron-connected battery. The large battery is expected to be connected and disconnected (swapped) at any time. USB is not expected to be connected by anyone but a technician. The Boron-connected battery is just in place to power the RTC and not require a full boot-up of the application code each time. It is expected that there will be no cellular connectivity for most of the operational time of the device. D8 is used to monitor VUSB through a resistor divider (10s of kohm) such that 5V on VUSB corresponds to 3.3V on D8. Debugging is through Serial1.

Sleep Code
As a user may be connecting or disconnecting the large battery at any time, the application code waits 10 seconds for a reconnect, then waits for the large battery voltage to drop, then for the cellular modem to turn off, and then goes into ultra low power mode with gpio wakeup on D8 and the mode button.

What Happens
As I watch the debug output, the application code concludes and there is some system output lines, if I reconnect the large battery then, the Boron will not wakeup, and the D8 pin is steady at 1.8V.
Scope Capture of Event
Here are the channels:
CH1 = D8 Pin
CH2 = VUSB Pin
CH3 = 3.3V Pin

The Questions
Is there a minimum required rise time for the D8 (or any other) pin?
Is there an unexpected/undocumented feature of D8 that makes it unsuitable for a wakeup?
What is causing D8 to hold at 1.8V?

I suspect that the problem is that when you set a pin as a wake-up pin RISING, Device OS adds an internal 13K pull-down on the pin to make sure it’s not floating. I suspect that’s what’s causing your voltage, and why it’s not getting high enough to wake, due to the resistor divider.

This is not specific to D8, it will happen for any pin configured as a GPIO wake.

And for a falling pin, there’s a 13K pull-up to 3V3.

1 Like

Thank you for the response. I have two further questions then:
Is there no pull-up or pull-down on when CHANGE is the mode for the wakeup pin?
Is it possible to disable the pull-down or pull-up for GPIO wakeup?

How about that. I didn’t really expect it to be the case, but CHANGE does not have pull on it. Give that a try!

2 Likes

This works for me. I would recommend the documentation gets updated.

1 Like

The .gpio() docs have been updated.

1 Like