Nýjir kóðar og uppfærðir gamlir kóðar fyrir arduino yfir í zephyr

This commit is contained in:
2026-10-08 15:18:32 +00:00
parent 53091f68df
commit c2d8780478
24 changed files with 922 additions and 338 deletions
+57 -7
View File
@@ -1,14 +1,64 @@
#include <avr/io.h>
//#include <avr/io.h>
#include "digital_in.h"
Digital_in::Digital_in(uint8_t pin) : pin_mask(1<<pin) {}
#include <zephyr/devicetree.h>
void Digital_in::init() {
DDRD &= ~pin_mask;
PORTD |= pin_mask;
// 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(); }
static const struct gpio_dt_spec encoder_c1_gpio =
GPIO_DT_SPEC_GET(DT_ALIAS(encoder_c1), gpios);
static const struct gpio_dt_spec encoder_c2_gpio =
GPIO_DT_SPEC_GET(DT_ALIAS(encoder_c2), gpios);
Digital_in::Digital_in(uint8_t pin_id)
: gpio(nullptr)
{
switch (pin_id) {
case ENCODER_C1:
gpio = &encoder_c1_gpio;
break;
case ENCODER_C2:
gpio = &encoder_c2_gpio;
break;
default:
gpio = nullptr;
break;
}
}
bool Digital_in::is_hi() { return PIND & pin_mask; }
bool Digital_in::is_lo() { return !is_hi(); }
void Digital_in::init()
{
if (gpio == nullptr || !gpio_is_ready_dt(gpio)) {
return;
}
// The overlay supplies the pin's GPIO flags.
gpio_pin_configure_dt(gpio, GPIO_INPUT);
}
bool Digital_in::is_hi()
{
if (gpio == nullptr) {
return false;
}
// Read the physical pin level: high is true, low is false.
return gpio_pin_get_raw(gpio->port, gpio->pin) > 0;
}
bool Digital_in::is_lo()
{
return !is_hi();
}