aparently working, more test is needed
This commit is contained in:
parent
33c5f4654c
commit
ac9e564d6a
|
|
@ -5,8 +5,7 @@
|
||||||
#include <zephyr/logging/log.h>
|
#include <zephyr/logging/log.h>
|
||||||
#include <zephyr/device.h>
|
#include <zephyr/device.h>
|
||||||
#include <zephyr/drivers/counter.h>
|
#include <zephyr/drivers/counter.h>
|
||||||
|
#include <stdlib.h>
|
||||||
LOG_MODULE_REGISTER(actuator, LOG_LEVEL_INF);
|
|
||||||
|
|
||||||
/* === GPIOs from devicetree === */
|
/* === GPIOs from devicetree === */
|
||||||
#define USER_NODE DT_PATH(zephyr_user)
|
#define USER_NODE DT_PATH(zephyr_user)
|
||||||
|
|
@ -48,7 +47,7 @@ static void pwm_isr(const struct device *dev,
|
||||||
static int configure_gpio(void)
|
static int configure_gpio(void)
|
||||||
{
|
{
|
||||||
if (!device_is_ready(do1.port) || !device_is_ready(do2.port) || !device_is_ready(do_en.port)) {
|
if (!device_is_ready(do1.port) || !device_is_ready(do2.port) || !device_is_ready(do_en.port)) {
|
||||||
LOG_ERR("GPIO device not ready");
|
printk("GPIO device not ready");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -64,7 +63,7 @@ static void start_counter(uint32_t us)
|
||||||
int err = counter_get_value(counter_dev, &now_ticks);
|
int err = counter_get_value(counter_dev, &now_ticks);
|
||||||
if (err)
|
if (err)
|
||||||
{
|
{
|
||||||
LOG_ERR("Failed to get counter value (%d)", err);
|
printk("Failed to get counter value (%d)", err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -76,7 +75,12 @@ static void start_counter(uint32_t us)
|
||||||
alarm_cfg.callback = pwm_isr;
|
alarm_cfg.callback = pwm_isr;
|
||||||
alarm_cfg.user_data = NULL;
|
alarm_cfg.user_data = NULL;
|
||||||
|
|
||||||
counter_set_channel_alarm(counter_dev, 0, &alarm_cfg);
|
err = counter_set_channel_alarm(counter_dev, 0, &alarm_cfg);
|
||||||
|
if (err)
|
||||||
|
{
|
||||||
|
printk("Failed to set channel alarm (%d)", err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* === ISR callback === */
|
/* === ISR callback === */
|
||||||
|
|
@ -146,7 +150,7 @@ int actuator_init(enum actuator_mode mode)
|
||||||
if (ret) return ret;
|
if (ret) return ret;
|
||||||
|
|
||||||
if (!device_is_ready(counter_dev)) {
|
if (!device_is_ready(counter_dev)) {
|
||||||
LOG_ERR("Counter device not ready");
|
printk("Counter device not ready");
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -155,7 +159,7 @@ int actuator_init(enum actuator_mode mode)
|
||||||
current_mode = mode;
|
current_mode = mode;
|
||||||
initialized = true;
|
initialized = true;
|
||||||
active_phase = false;
|
active_phase = false;
|
||||||
LOG_INF("Actuator initialized in mode %d", mode);
|
printk("Actuator initialized in mode %d", mode);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
@ -174,7 +178,7 @@ int actuator_motor_set_speed(int speed_percent)
|
||||||
|
|
||||||
motor_speed = speed_percent;
|
motor_speed = speed_percent;
|
||||||
active_phase = false;
|
active_phase = false;
|
||||||
start_counter(1); /* trigger ISR soon */
|
start_counter(100); /* trigger ISR soon */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -186,6 +190,6 @@ int actuator_servo_set_angle(int angle_deg)
|
||||||
|
|
||||||
servo_angle = angle_deg;
|
servo_angle = angle_deg;
|
||||||
active_phase = false;
|
active_phase = false;
|
||||||
start_counter(1); /* trigger ISR soon */
|
start_counter(100); /* trigger ISR soon */
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,10 +27,11 @@ int main(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
actuator_init(ACTUATOR_MODE_MOTOR);
|
actuator_init(ACTUATOR_MODE_SERVO);
|
||||||
actuator_enable(1);
|
actuator_enable(1);
|
||||||
|
|
||||||
actuator_motor_set_speed(50); // -100..100 %
|
actuator_servo_set_angle(100);
|
||||||
|
//actuator_motor_set_speed(-50); // -100..100 %
|
||||||
/* Init modules */
|
/* Init modules */
|
||||||
led_init();
|
led_init();
|
||||||
button_init();
|
button_init();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue