From 5b6fdce2732d4502425e6380029edfddb31a24e5 Mon Sep 17 00:00:00 2001 From: Sanchayan Maity Date: Thu, 13 Apr 2017 16:48:06 +0530 Subject: [PATCH] Add PWM demo code Add PWM demo code. We use libsoc for handling PWM. --- pwm/.cproject | 65 +++++++++++++++++++++++++++++ pwm/.gitignore | 1 + pwm/.project | 26 ++++++++++++ pwm/.settings/language.settings.xml | 14 +++++++ pwm/pwm.c | 61 +++++++++++++++++++++++++++ 5 files changed, 167 insertions(+) create mode 100644 pwm/.cproject create mode 100644 pwm/.gitignore create mode 100644 pwm/.project create mode 100644 pwm/.settings/language.settings.xml create mode 100644 pwm/pwm.c diff --git a/pwm/.cproject b/pwm/.cproject new file mode 100644 index 0000000..f3bae2b --- /dev/null +++ b/pwm/.cproject @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pwm/.gitignore b/pwm/.gitignore new file mode 100644 index 0000000..3df573f --- /dev/null +++ b/pwm/.gitignore @@ -0,0 +1 @@ +/Debug/ diff --git a/pwm/.project b/pwm/.project new file mode 100644 index 0000000..18e32a9 --- /dev/null +++ b/pwm/.project @@ -0,0 +1,26 @@ + + + pwm + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + + diff --git a/pwm/.settings/language.settings.xml b/pwm/.settings/language.settings.xml new file mode 100644 index 0000000..00e750b --- /dev/null +++ b/pwm/.settings/language.settings.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/pwm/pwm.c b/pwm/pwm.c new file mode 100644 index 0000000..2743935 --- /dev/null +++ b/pwm/pwm.c @@ -0,0 +1,61 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * libsoc PWM API Documentation: https://jackmitch.github.io/libsoc/c/pwm/ + */ + +int main(void) +{ + pwm* vf_pwm = NULL; + uint32_t ret = EXIT_SUCCESS; + uint32_t pwm_period = 0; + uint32_t pwm_duty_cycle = 0; + + vf_pwm = libsoc_pwm_request(0, 0, LS_WEAK); + if (vf_pwm == NULL) { + perror("PWM request failed"); + return EXIT_FAILURE; + } + + printf("Enter PWM Period:\t"); + scanf("%d", &pwm_period); + ret = libsoc_pwm_set_period(vf_pwm, pwm_period); + if (ret == EXIT_FAILURE) { + perror("PWM set period failed"); + goto exit_failure; + } + + printf("Enter PWM Duty Cycle:\t"); + scanf("%d", &pwm_duty_cycle); + ret = libsoc_pwm_set_duty_cycle(vf_pwm, pwm_duty_cycle); + if (ret == EXIT_FAILURE) { + perror("PWM set duty cycle failed"); + goto exit_failure; + } + + ret = libsoc_pwm_set_enabled(vf_pwm, ENABLED); + if (ret == EXIT_FAILURE) { + perror("PWM enable failed"); + goto exit_failure; + } + + printf("PWM will be running for 10 seconds\n"); + sleep(10); + + printf("Disabling PWM\n"); + ret = libsoc_pwm_set_enabled(vf_pwm, DISABLED); + if (ret == EXIT_FAILURE) + perror("PWM disable failed"); + +exit_failure: + libsoc_pwm_free(vf_pwm); + + return ret; +}