50 snprintf(buffer,
sizeof(buffer),
"0x%016llX", value);
59 Serial.println(
"\n=== AXP192 IRQ Example ===\n");
62 Serial.println(
"Failed to init AXP192!");
63 while (1) delay(1000);
65 Serial.println(
"AXP192 initialized");
82 Serial.println(
"IRQ sources enabled");
86 Serial.println(
"\n=== Setup Complete ===\n");
93 Serial.print(
"\n--- Interrupt : 0x");
95 Serial.print(
" --- ");
97 Serial.println(
"VBUS inserted");
99 Serial.println(
"VBUS removed");
101 Serial.println(
"Battery inserted");
103 Serial.println(
"Battery removed");
105 Serial.println(
"Charge started");
107 Serial.println(
"Charge done");
109 Serial.println(
"PEKEY short press");
111 Serial.println(
"PEKEY long press");
113 Serial.println(
"ACIN over-voltage");
115 Serial.println(
"ACIN inserted");
117 Serial.println(
"ACIN removed");
119 Serial.println(
"VBUS over-voltage");
121 Serial.println(
"Chip over-temperature");
123 Serial.println(
"Charge current low");
125 Serial.println(
"Battery temp high");
127 Serial.println(
"Battery temp low");
129 Serial.println(
"DCDC1 voltage low");
131 Serial.println(
"DCDC2 voltage low");
133 Serial.println(
"DCDC3 voltage low");
135 static uint32_t lastTimerIrq = 0;
136 uint32_t now = millis() / 1000;
139 Serial.println(
"] Timer interrupt");
141 Serial.print(
"Timer timed out");
143 Serial.print((now - lastTimerIrq) / 60);
144 Serial.print(
"] minute have passed");
void printU64(uint64_t value)
static bool isDc2VoltLess(uint64_t m)
Check DC-DC2 voltage low interrupt.
static constexpr uint64_t IRQ_BAT_CHG_START
Charging started interrupt mask.
static bool isAcinInsert(uint64_t m)
Check ACIN insertion interrupt.
static constexpr uint64_t IRQ_VBUS_INSERT
VBUS insertion interrupt mask.
static bool isBatChgStart(uint64_t m)
Check charging started interrupt.
static bool isVbusOv(uint64_t m)
Check VBUS overvoltage interrupt.
bool clearStatus() override
Clear all pending interrupt status registers.
static bool isTimerIrq(uint64_t m)
AXP192 alias for isTimerTimeout().
static bool isBatChgDone(uint64_t m)
Check charging completed interrupt.
static bool isBatTempLow(uint64_t m)
Check battery temperature low interrupt.
static bool isPekeyShortPress(uint64_t m)
Check PEK short press interrupt.
static bool isDc1VoltLess(uint64_t m)
Check DC-DC1 voltage low interrupt.
static bool isBatRemove(uint64_t m)
Check battery removal interrupt.
static bool isDc3VoltLess(uint64_t m)
Check DC-DC3 voltage low interrupt.
static constexpr uint64_t IRQ_PEKEY_SHORT_PRESS
PEK short press interrupt mask.
static bool isBatTempHigh(uint64_t m)
Check battery temperature high interrupt.
static bool isVbusRemove(uint64_t m)
Check VBUS removal interrupt.
static constexpr uint64_t IRQ_BAT_REMOVE
Battery removal interrupt mask.
static bool isPekeyLongPress(uint64_t m)
Check PEK long press interrupt.
static bool isVbusInsert(uint64_t m)
Check VBUS insertion interrupt.
static bool isAcinOv(uint64_t m)
Check ACIN overvoltage interrupt.
static constexpr uint64_t IRQ_BAT_CHG_DONE
Charging completed interrupt mask.
static constexpr uint64_t IRQ_BAT_INSERT
Battery insertion interrupt mask.
static bool isBatInsert(uint64_t m)
Check battery insertion interrupt.
static bool isChipOvTemp(uint64_t m)
Check chip overtemperature interrupt.
bool enable(uint64_t mask) override
Enable one or more interrupt sources.
static constexpr uint64_t IRQ_VBUS_REMOVE
VBUS removal interrupt mask.
static bool isAcinRemove(uint64_t m)
Check ACIN removal interrupt.
static constexpr uint64_t IRQ_TIMER_TIMEOUT
Timer timeout interrupt mask.
uint64_t readStatus(bool clear=true) override
Read and optionally clear interrupt status.
static constexpr uint64_t IRQ_PEKEY_LONG_PRESS
PEK long press interrupt mask.
static bool isChgCurrLess(uint64_t m)
Check charge current less than target interrupt.
bool isTimedOut() const override
Check whether the timer has expired (bit 7 of REG8AH).
bool clearTimeout() override
Clear the timeout status flag (write 1 to bit 7 of REG8AH).
bool setTimer(uint8_t minutes) override
Start the timer with the given duration, or stop it.
AXP192 PMIC Unified Interface.
bool begin(SensorCommCustom::CustomCallback callback, SensorCommCustomHal::CustomHalCallback hal_cb, uint8_t addr)
Initialise the AXP192 with custom communication callbacks.
AXP1xxIrq< axp192_regs > & irq()
Access the IRQ subsystem.
AXP1xxTimer< axp192_regs > & timer()
Access the countdown timer subsystem.