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