22 return INPUT_PULLDOWN;
37 auto *arg =
new ISRPinArg{};
38 arg->pin = this->
pin_;
40 arg->mask = 1 << this->
pin_;
45 PinStatus arduino_mode = LOW;
48 arduino_mode =
inverted_ ? FALLING : RISING;
51 arduino_mode =
inverted_ ? RISING : FALLING;
54 arduino_mode = CHANGE;
64 attachInterrupt(
pin_, func, arduino_mode, arg);
85 auto *arg =
reinterpret_cast<ISRPinArg *
>(this->
arg_);
86 return bool(sio_hw->gpio_in & arg->mask) != arg->inverted;
90 auto *arg =
reinterpret_cast<ISRPinArg *
>(this->
arg_);
91 if (value != arg->inverted) {
92 sio_hw->gpio_set = arg->mask;
94 sio_hw->gpio_clr = arg->mask;
105 auto *arg =
reinterpret_cast<ISRPinArg *
>(this->
arg_);
107 sio_hw->gpio_oe_set = arg->mask;
109 sio_hw->gpio_oe_clr = arg->mask;
110 hw_write_masked(&pads_bank0_hw->io[arg->pin],
113 PADS_BANK0_GPIO0_PUE_BITS | PADS_BANK0_GPIO0_PDE_BITS);
Copy of GPIOPin that is safe to use from ISRs (with no virtual functions)
void digital_write(bool value)
void pin_mode(gpio::Flags flags)
void digital_write(bool value) override
ISRInternalGPIOPin to_isr() const
bool digital_read() override
void pin_mode(gpio::Flags flags) override
void attach_interrupt_(void(*func)(void *), void *arg, gpio::InterruptType type) const
void detach_interrupt() const
size_t dump_summary(char *buffer, size_t len) const override
ESPHOME_LOG_TAG(TAG, "rp2.crash")