Merge branch 'master' of https://github.com/Sissors/mbed into Sissors-master

pull/413/head
0xc0170 2014-07-23 08:42:17 +01:00
commit f56f37528d
2 changed files with 6 additions and 6 deletions

View File

@ -99,11 +99,11 @@ void pwmout_write(pwmout_t* obj, float value) {
value = 1.0; value = 1.0;
} }
*obj->CnV = (uint32_t)((float)(*obj->MOD) * value); *obj->CnV = (uint32_t)((float)(*obj->MOD + 1) * value);
} }
float pwmout_read(pwmout_t* obj) { float pwmout_read(pwmout_t* obj) {
float v = (float)(*obj->CnV) / (float)(*obj->MOD); float v = (float)(*obj->CnV) / (float)(*obj->MOD + 1);
return (v > 1.0) ? (1.0) : (v); return (v > 1.0) ? (1.0) : (v);
} }
@ -118,7 +118,7 @@ void pwmout_period_ms(pwmout_t* obj, int ms) {
// Set the PWM period, keeping the duty cycle the same. // Set the PWM period, keeping the duty cycle the same.
void pwmout_period_us(pwmout_t* obj, int us) { void pwmout_period_us(pwmout_t* obj, int us) {
float dc = pwmout_read(obj); float dc = pwmout_read(obj);
*obj->MOD = (uint32_t)(pwm_clock * (float)us); *obj->MOD = (uint32_t)(pwm_clock * (float)us) - 1;
pwmout_write(obj, dc); pwmout_write(obj, dc);
} }

View File

@ -78,12 +78,12 @@ void pwmout_write(pwmout_t* obj, float value) {
value = 1.0; value = 1.0;
} }
*obj->CnV = (uint32_t)((float)(*obj->MOD) * value); *obj->CnV = (uint32_t)((float)(*obj->MOD + 1) * value);
*obj->CNT = 0; *obj->CNT = 0;
} }
float pwmout_read(pwmout_t* obj) { float pwmout_read(pwmout_t* obj) {
float v = (float)(*obj->CnV) / (float)(*obj->MOD); float v = (float)(*obj->CnV) / (float)(*obj->MOD + 1);
return (v > 1.0) ? (1.0) : (v); return (v > 1.0) ? (1.0) : (v);
} }
@ -98,7 +98,7 @@ void pwmout_period_ms(pwmout_t* obj, int ms) {
// Set the PWM period, keeping the duty cycle the same. // Set the PWM period, keeping the duty cycle the same.
void pwmout_period_us(pwmout_t* obj, int us) { void pwmout_period_us(pwmout_t* obj, int us) {
float dc = pwmout_read(obj); float dc = pwmout_read(obj);
*obj->MOD = (uint32_t)(pwm_clock * (float)us); *obj->MOD = (uint32_t)(pwm_clock * (float)us) - 1;
pwmout_write(obj, dc); pwmout_write(obj, dc);
} }