From eeb7b3fc6fbde76b86582498f98524e27726bdb7 Mon Sep 17 00:00:00 2001 From: Yilin Sun Date: Fri, 24 Mar 2023 18:46:34 +0800 Subject: [PATCH] Implemented some PWM. Signed-off-by: Yilin Sun --- CMakeLists.txt | 1 + lib/mruby | 2 +- src/mrb_machine_impl/mrb_machine_pwm_impl.c | 34 +++++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 src/mrb_machine_impl/mrb_machine_pwm_impl.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 6073fb5..93cf167 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -67,6 +67,7 @@ set(TARGET_SOURCES "src/app_syscalls.c" "src/mrb_machine_impl/mrb_machine_adc_impl.c" "src/mrb_machine_impl/mrb_machine_gpio_impl.c" + "src/mrb_machine_impl/mrb_machine_pwm_impl.c" "src/main.c" ) diff --git a/lib/mruby b/lib/mruby index 1c6b50a..ef83164 160000 --- a/lib/mruby +++ b/lib/mruby @@ -1 +1 @@ -Subproject commit 1c6b50af4e36a96beca732cab5f1029c3138db75 +Subproject commit ef83164ddba5403ec1e8eff4c102af907353bc95 diff --git a/src/mrb_machine_impl/mrb_machine_pwm_impl.c b/src/mrb_machine_impl/mrb_machine_pwm_impl.c new file mode 100644 index 0000000..1948cbf --- /dev/null +++ b/src/mrb_machine_impl/mrb_machine_pwm_impl.c @@ -0,0 +1,34 @@ +#include + +/* Board */ +#include "board.h" + +/* SDK drivers */ +#include "fsl_ctimer.h" +#include "fsl_gpio.h" +#include "fsl_iocon.h" + +/* Gem private */ +#include "machine-pwm/src/pwm.h" + +#define PWM_IMPL_CT_ID (x)((x >> 2) & 0x07) + +static const uint32_t pwm_channel_map[5][4] = { + {0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL}, // CTIMER0 + {0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL}, // CTIMER1 + {0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL}, // CTIMER2 + {0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL}, // CTIMER3 + {0x00000000UL, 0x00000000UL, 0x00000000UL, 0x00000000UL}, // CTIMER4 +}; + +int mrb_machine_pwm_impl_config_set(uint32_t channel, machine_pwm_config_t *config) { + printf("Init pin: %ld, freq: %ld, duty: %d\n", channel, config->freq, config->duty); + return 0; +} + +int mrb_machine_pwm_impl_config_get(uint32_t channel, machine_pwm_config_t *config) { + config->freq = 1000; + config->duty = 32768; + config->enabled = true; + return 0; +} \ No newline at end of file