Heljarinnar breytingar til þess að laga nokkra hluti í part 1.
This commit is contained in:
+21
-11
@@ -1,17 +1,8 @@
|
||||
//#include <avr/io.h>
|
||||
#include "digital_in.h"
|
||||
|
||||
#include <errno.h>
|
||||
#include <zephyr/devicetree.h>
|
||||
|
||||
// Digital_in::Digital_in(uint8_t pin) : pin_mask(1<<pin) {}
|
||||
|
||||
// void Digital_in::init() {
|
||||
// DDRD &= ~pin_mask;
|
||||
// PORTD |= pin_mask;
|
||||
// }
|
||||
|
||||
// bool Digital_in::is_hi() { return PIND & pin_mask; }
|
||||
// bool Digital_in::is_lo() { return !is_hi(); }
|
||||
#include <zephyr/sys/util.h>
|
||||
|
||||
static const struct gpio_dt_spec encoder_c1_gpio =
|
||||
GPIO_DT_SPEC_GET(DT_ALIAS(encoder_c1), gpios);
|
||||
@@ -62,3 +53,22 @@ bool Digital_in::is_lo()
|
||||
return !is_hi();
|
||||
}
|
||||
|
||||
int Digital_in::enable_rising_edge_interrupt(
|
||||
struct gpio_callback *callback,
|
||||
gpio_callback_handler_t handler)
|
||||
{
|
||||
if (gpio == nullptr || !gpio_is_ready_dt(gpio)) {
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
gpio_init_callback(callback, handler, BIT(gpio->pin));
|
||||
|
||||
const int ret = gpio_add_callback(gpio->port, callback);
|
||||
if (ret < 0) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
// Physical rising edge, independent of the active level in the overlay.
|
||||
return gpio_pin_interrupt_configure(
|
||||
gpio->port, gpio->pin, GPIO_INT_EDGE_RISING);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user