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; +}