49 snprintf(buffer,
sizeof(buffer),
"0x%016llX", value);
58 Serial.println(
"\n=== AXP202 IRQ Example ===\n");
61 Serial.println(
"Failed to init AXP202!");
62 while (1) delay(1000);
64 Serial.println(
"AXP202 initialized");
91 Serial.println(
"IRQ sources enabled");
95 Serial.println(
"\n=== Setup Complete ===\n");
103 Serial.print(
"\n--- Interrupt : 0x");
105 Serial.print(
" --- ");
108 Serial.println(
"VBUS inserted");
110 Serial.println(
"VBUS removed");
112 Serial.println(
"Battery inserted");
114 Serial.println(
"Battery removed");
116 Serial.println(
"Charge started");
118 Serial.println(
"Charge done");
120 Serial.println(
"PEKEY short press");
122 Serial.println(
"PEKEY long press");
124 Serial.println(
"ACIN over-voltage");
126 Serial.println(
"ACIN inserted");
128 Serial.println(
"ACIN removed");
130 Serial.println(
"VBUS over-voltage");
132 Serial.println(
"Chip over-temperature");
134 Serial.println(
"Charge current low");
136 Serial.println(
"Battery temp high");
138 Serial.println(
"Battery temp low");
140 Serial.println(
"GPIO0 edge trigger");
142 Serial.println(
"GPIO1 edge trigger");
144 Serial.println(
"GPIO2 edge trigger");
147 Serial.println(
"GPIO3 edge trigger");
149 Serial.println(
"PEK rising edge");
151 Serial.println(
"PEK falling edge");
153 Serial.println(
"APS low voltage level1");
155 Serial.println(
"APS low voltage level2");
157 static uint32_t lastTimerIrq = 0;
158 uint32_t now = millis() / 1000;
161 Serial.println(
"] Timer interrupt");
163 Serial.print(
"Timer timed out");
165 Serial.print((now - lastTimerIrq) / 60);
166 Serial.print(
"] minute have passed");
void printU64(uint64_t value)
static bool isGpio1EdgeTrigger(uint64_t m)
Check GPIO1 edge trigger interrupt.
static constexpr uint64_t IRQ_GPIO0_EDGE
GPIO0 edge trigger interrupt mask.
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 constexpr uint64_t IRQ_LOW_VOLT_LEVEL2
Low voltage level 2 interrupt mask.
static bool isVbusOv(uint64_t m)
Check VBUS overvoltage interrupt.
bool clearStatus() override
Clear all pending interrupt status registers.
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 constexpr uint64_t IRQ_PKEY_NEGATIVE
PEK press falling edge interrupt mask.
static constexpr uint64_t IRQ_GPIO3_EDGE
GPIO3 edge trigger interrupt mask.
static constexpr uint64_t IRQ_GPIO1_EDGE
GPIO1 edge trigger interrupt mask.
static bool isLowVoltLevel2(uint64_t m)
Check low voltage level 2 interrupt.
static bool isBatRemove(uint64_t m)
Check battery removal interrupt.
static bool isGpio0EdgeTrigger(uint64_t m)
Check GPIO0 edge trigger interrupt.
static bool isPkeyNegative(uint64_t m)
Check PEK press falling edge 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 isGpio3EdgeTrigger(uint64_t m)
Check GPIO3 edge trigger interrupt.
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 bool isGpio2EdgeTrigger(uint64_t m)
Check GPIO2 edge trigger interrupt.
static constexpr uint64_t IRQ_BAT_INSERT
Battery insertion interrupt mask.
static bool isPkeyPositive(uint64_t m)
Check PEK press rising edge interrupt.
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 constexpr uint64_t IRQ_LOW_VOLT_LEVEL1
Low voltage level 1 interrupt mask.
static bool isAcinRemove(uint64_t m)
Check ACIN removal interrupt.
static constexpr uint64_t IRQ_TIMER_TIMEOUT
Timer timeout interrupt mask.
static constexpr uint64_t IRQ_PKEY_POSITIVE
PEK press rising edge interrupt mask.
static bool isLowVoltLevel1(uint64_t m)
Check low voltage level 1 interrupt.
static bool isTimerTimeout(uint64_t m)
Check timer timeout interrupt.
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.
Unified AXP202 PMIC driver.
AXP1xxIrq< axp202_regs > & irq()
Access the IRQ (interrupt) interface.
AXP1xxTimer< axp202_regs > & timer()
Access the countdown timer subsystem.
bool begin(SensorCommCustom::CustomCallback callback, SensorCommCustomHal::CustomHalCallback hal_cb, uint8_t addr)
Initialise the PMIC using custom communication callbacks.