pwm.c: Must write period before duty_cycle to avoid sysfs error
authorHenry Bruce <henry.bruce@intel.com>
Thu, 20 Nov 2014 00:55:48 +0000 (16:55 -0800)
committerThomas Ingleby <thomas.c.ingleby@intel.com>
Thu, 20 Nov 2014 15:08:31 +0000 (15:08 +0000)
Signed-off-by: Henry Bruce <henry.bruce@intel.com>
src/pwm/pwm.c

index 7cefbfc..313db77 100644 (file)
@@ -386,13 +386,13 @@ mraa_pwm_config_ms(mraa_pwm_context dev, int ms ,float ms_float)
     int old_dutycycle, old_period, status;
     old_dutycycle = mraa_pwm_read_duty(dev);
     old_period = mraa_pwm_read_period(dev);
-    status = mraa_pwm_write_duty(dev, 0);
+    status = mraa_pwm_period_us(dev, ms*1000);
     if (status != MRAA_SUCCESS) {
+        mraa_pwm_write_duty(dev, old_dutycycle);
         return status;
     }
-    status = mraa_pwm_period_us(dev, ms*1000);
+    status = mraa_pwm_write_duty(dev, 0);
     if (status != MRAA_SUCCESS) {
-        mraa_pwm_write_duty(dev, old_dutycycle);
         return status;
     }
     status = mraa_pwm_pulsewidth_us(dev, ms_float*1000);
@@ -410,13 +410,13 @@ mraa_pwm_config_percent(mraa_pwm_context dev, int ms ,float percentage)
     int old_dutycycle, old_period, status;
     old_dutycycle = mraa_pwm_read_duty(dev);
     old_period = mraa_pwm_read_period(dev);
-    status = mraa_pwm_write_duty(dev, 0);
+    status = mraa_pwm_period_us(dev, ms*1000);
     if (status != MRAA_SUCCESS) {
+        mraa_pwm_write_duty(dev, old_dutycycle);
         return status;
     }
-    status = mraa_pwm_period_us(dev, ms*1000);
+    status = mraa_pwm_write_duty(dev, 0);
     if (status != MRAA_SUCCESS) {
-        mraa_pwm_write_duty(dev, old_dutycycle);
         return status;
     }
     status = mraa_pwm_pulsewidth_us(dev, (ms*1000)*percentage);