AB1805_Rk and the Hardware WDT in Version OS 5.30

I have the AB1805 RTC hardware on my Boron 404X board along with the new hardware wdt available in OS 5.30.

I use the Particle AB1805 software library for the rtc hardware to report data at a specific time and the Particle example software for the WDT.to reset the system if the WDT is not refreshed at least every 71 minutes.

Today, my cell carrier evidently updated their system at 0600 local. Many of my unit went offline(blinking white), and they have not reset.

What am I doing wrong. Is the AB1805 and the hardware WDT not compatible?

These units are very remotely located. I was counting on the WDT operating well and alleviating this type situation..

Any suggestions would be very gratefully received!!

Can you share some code snippets on how you implemented AB1805 and the new WDT in 5.3.0? What functions are you using from each?

I personally use AB1805.DeepPowerDown() if the device is attempting to connect for I think 11 minutes. I then use WDT to reset the device if it does not have an ACK back from a Publish event after 2.5X the expected publishing frequency.

How do you know they are not resetting if they are not connecting? Maybe you still don't have an issue with the cell carrier?

Blinking white is not a normal pattern for a device. That normally will only occur if the device does not have sufficient power. The device starts to boot (blinks white), then browns out, which causes the LED to turn off, then the process repeats.

When I get to the devices and press the reset button, they come online. The battery voltage is 3.67 Volts from two parallel Saft LSH20 batteries.

Are the AB1805 and the new hardware WDT compatible. Does one interfere with the other? I am using the Particle software library and the Particle schematic on the AB1805 rtc. I am using the Particle example code on the WDT. with a timeout of 71 minutes.

Whatever happens when the carrier does their maintenance, my devices do not reset after the WDT timeout.


I'm unclear of how you are using it.

For the AB1805, do you have the watchdog configured? For what interval?

For the MCU watchdog, do you also have that implemented, and at what duration?

Are you using the EN pin control feature with the AB1805 or just RESET?

Can I send you my code? I have a customer expecting prototype delivery tomorrow. The code is short!!


IRQ2 out of the AB1805 goes to the EN via a 2N7002 fet. FOUT goes to D8 on the Particle.

Setting a wakeup time in code works. The RTC wdt did not seem to be working. I do not have the expertise or equipment to trouble shot the RTC WDT, so I implemented the hardware wdt in the Particle.


The Ab1805 /RST goes to the Particle Boron pin1 (RESET). The MCU watchdog is set for 71 monutes. (11 min + 60 minutes delay.

bool rtcSet = ab1805.isRTCSet();
struct tm wakeTime = {0};
wakeTime.tm_sec = 0;
wakeTime.tm_min = 59;
ab1805.repeatingInterrupt(&wakeTime, AB1805::REG_TIMER_CTRL_RPT_MIN);

So if your issue is you are not resetting the device when you are not "connected", then I'd suggest you review this example firmware for the AB1805: GitHub - rickkas7/AB1805_RK: Library for AB1805/AM1805 RTC/Watchdog for Particle devices

Specifically this portion of the code:

    // Monitor the cloud connection state and do a deep power down if a 
    // failure to connect exceeds connectMaxTime (typically 11 minutes).
    if (Particle.connected()) {
        if (!cloudConnected) {
            cloudConnected = true;
            uint32_t elapsed = (uint32_t)(System.millis() - cloudConnectStarted);
            Log.info("cloud connected in %lu ms", elapsed);
    else {
        if (cloudConnected) {
            cloudConnected = false;
            cloudConnectStarted = System.millis();
            Log.info("lost cloud connection");
        uint32_t elapsed = (uint32_t)(System.millis() - cloudConnectStarted);
        if (elapsed > connectMaxTime.count()) {
            Log.info("failed to connect to cloud, doing deep reset");

Notice here that within the user application code, there is additional logic that detects it's unable to establish a cloud connection for 11 minutes and if so, then call AB1805.DeepPowerDown(). In the example, this pulls the EN low for 30 seconds completely power cycling both the MCU and R510 Cellular modem. Do you have something like this?

On a related note, where do you pet the WTD? Are you simply petting it every loop or only when the device is connected/successfully publishes data?

If you continuously pet both the AB1805 watchdog as well as the hardware WDT. Then from a watchdog perspective, the device is happy since it's always getting pet.

Thanks for the reply!!

The code you mentioned is the code I am running plus the new OS 5.30 WDT software code.

I commented out the WDT start function, and I put a scope on the Boron reset pin. I also put a 150 mSec delay at the bottom of the loop function so that max Ab1805 wdt would hopefully pulse the Boron reset pin. The Ab1805 did send an 85 mSec negative 3.3 V pulse to the reset pin as designed.

The phenomenon that I am having trouble with is some of my units at 5:59 am local go to lunch, and the Boron starts indefinitely blinking white. Today one unit started blinking white, and yesterday there were six units blinking white. I am going to leave my scope on the one that failed today, and I will see what happens. The one that failed today worked fine after a button reset..

FYI I am almost under the shadow of the cell tower. The RSSI is usually better than -52 db. These units will be in the boonies, so this behavior is very bad.


I am very suspicious of the cell service. If another unit starts blinking white, I will drive around to other cell towers to see if the unit can connect.