* [PATCH] pwm: lpc32xx - Fix the PWM polarity @ 2012-11-05 16:48 Alban Bedel 2012-11-05 21:03 ` Thierry Reding 0 siblings, 1 reply; 13+ messages in thread From: Alban Bedel @ 2012-11-05 16:48 UTC (permalink / raw) To: Thierry Reding; +Cc: linux-kernel, Alban Bedel Signed-off-by: Alban Bedel <alban.bedel@avionic-design.de> --- drivers/pwm/pwm-lpc32xx.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/drivers/pwm/pwm-lpc32xx.c b/drivers/pwm/pwm-lpc32xx.c index adb87f0..a2704b8 100644 --- a/drivers/pwm/pwm-lpc32xx.c +++ b/drivers/pwm/pwm-lpc32xx.c @@ -51,7 +51,11 @@ static int lpc32xx_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, c = 256 * duty_ns; do_div(c, period_ns); - duty_cycles = c; + if (c > 255) + c = 255; + if (c < 1) + c = 1; + duty_cycles = 256 - c; writel(PWM_ENABLE | PWM_RELOADV(period_cycles) | PWM_DUTY(duty_cycles), lpc32xx->base + (pwm->hwpwm << 2)); -- 1.7.0.4 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH] pwm: lpc32xx - Fix the PWM polarity 2012-11-05 16:48 [PATCH] pwm: lpc32xx - Fix the PWM polarity Alban Bedel @ 2012-11-05 21:03 ` Thierry Reding 2012-11-06 9:36 ` Roland Stigge 0 siblings, 1 reply; 13+ messages in thread From: Thierry Reding @ 2012-11-05 21:03 UTC (permalink / raw) To: Alban Bedel; +Cc: linux-kernel, Roland Stigge, Alexandre Pereira da Silva [-- Attachment #1: Type: text/plain, Size: 936 bytes --] Cc'ing Roland and Alexandre. What do you guys think? On Mon, Nov 05, 2012 at 05:48:45PM +0100, Alban Bedel wrote: > Signed-off-by: Alban Bedel <alban.bedel@avionic-design.de> > --- > drivers/pwm/pwm-lpc32xx.c | 6 +++++- > 1 files changed, 5 insertions(+), 1 deletions(-) > > diff --git a/drivers/pwm/pwm-lpc32xx.c b/drivers/pwm/pwm-lpc32xx.c > index adb87f0..a2704b8 100644 > --- a/drivers/pwm/pwm-lpc32xx.c > +++ b/drivers/pwm/pwm-lpc32xx.c > @@ -51,7 +51,11 @@ static int lpc32xx_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, > > c = 256 * duty_ns; > do_div(c, period_ns); > - duty_cycles = c; > + if (c > 255) > + c = 255; > + if (c < 1) > + c = 1; > + duty_cycles = 256 - c; > > writel(PWM_ENABLE | PWM_RELOADV(period_cycles) | PWM_DUTY(duty_cycles), > lpc32xx->base + (pwm->hwpwm << 2)); Shouldn't duty_cycles rather be 255 - c, such that it can still be 0? Thierry [-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] pwm: lpc32xx - Fix the PWM polarity 2012-11-05 21:03 ` Thierry Reding @ 2012-11-06 9:36 ` Roland Stigge [not found] ` <CAAAP30HwBzYFpy942UyiQX2SkzV4naBbhwichp201bvfEm2mxA@mail.gmail.com> 0 siblings, 1 reply; 13+ messages in thread From: Roland Stigge @ 2012-11-06 9:36 UTC (permalink / raw) To: Thierry Reding; +Cc: Alban Bedel, linux-kernel, Alexandre Pereira da Silva On 05/11/12 22:03, Thierry Reding wrote: > Cc'ing Roland and Alexandre. What do you guys think? > > On Mon, Nov 05, 2012 at 05:48:45PM +0100, Alban Bedel wrote: >> Signed-off-by: Alban Bedel <alban.bedel@avionic-design.de> --- >> drivers/pwm/pwm-lpc32xx.c | 6 +++++- 1 files changed, 5 >> insertions(+), 1 deletions(-) >> >> diff --git a/drivers/pwm/pwm-lpc32xx.c >> b/drivers/pwm/pwm-lpc32xx.c index adb87f0..a2704b8 100644 --- >> a/drivers/pwm/pwm-lpc32xx.c +++ b/drivers/pwm/pwm-lpc32xx.c @@ >> -51,7 +51,11 @@ static int lpc32xx_pwm_config(struct pwm_chip >> *chip, struct pwm_device *pwm, >> >> c = 256 * duty_ns; do_div(c, period_ns); - duty_cycles = c; + if >> (c > 255) + c = 255; + if (c < 1) + c = 1; + duty_cycles = 256 >> - c; >> >> writel(PWM_ENABLE | PWM_RELOADV(period_cycles) | >> PWM_DUTY(duty_cycles), lpc32xx->base + (pwm->hwpwm << 2)); > > Shouldn't duty_cycles rather be 255 - c, such that it can still be > 0? > > Thierry According to the Manual: [Low]/[High] = [PWM_DUTY] / [256-PWM_DUTY], i.e., the PWM polarity inversion looks good. However, as Thierry pointed out, the valid range 0..255 should be maintained differently, maybe: if (c > 255) c = 255; duty_cycles = 255 - c; ? Thanks, Roland ^ permalink raw reply [flat|nested] 13+ messages in thread
[parent not found: <CAAAP30HwBzYFpy942UyiQX2SkzV4naBbhwichp201bvfEm2mxA@mail.gmail.com>]
* Re: [PATCH] pwm: lpc32xx - Fix the PWM polarity [not found] ` <CAAAP30HwBzYFpy942UyiQX2SkzV4naBbhwichp201bvfEm2mxA@mail.gmail.com> @ 2012-11-06 17:19 ` Alban Bedel 2012-11-07 15:25 ` Alban Bedel 0 siblings, 1 reply; 13+ messages in thread From: Alban Bedel @ 2012-11-06 17:19 UTC (permalink / raw) To: Alexandre Pereira da Silva Cc: Roland Stigge, Thierry Reding, LKML, Alban Bedel On Tue, 6 Nov 2012 07:47:22 -0200 Alexandre Pereira da Silva <aletes.xgr@gmail.com> wrote: > Can you test the 0 and 255 values on actual hardware and see the effective > values? 0 -> 0% 1 -> 99% 128 -> 50% 255 -> 1% So yes 0 mean 256. > It may be handled as the RELOADV where 0 really means 256. If so, you can > use the same logic I used originally on the frequency division. I'll look at this and submit a new patch. Alban ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH] pwm: lpc32xx - Fix the PWM polarity 2012-11-06 17:19 ` Alban Bedel @ 2012-11-07 15:25 ` Alban Bedel 2012-11-07 15:58 ` Alexandre Pereira da Silva 2012-11-08 9:51 ` Roland Stigge 0 siblings, 2 replies; 13+ messages in thread From: Alban Bedel @ 2012-11-07 15:25 UTC (permalink / raw) To: Thierry Reding Cc: LKML, Roland Stigge, Alexandre Pereira da Silva, Alban Bedel Signed-off-by: Alban Bedel <alban.bedel@avionic-design.de> --- drivers/pwm/pwm-lpc32xx.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-) diff --git a/drivers/pwm/pwm-lpc32xx.c b/drivers/pwm/pwm-lpc32xx.c index adb87f0..0dc278d 100644 --- a/drivers/pwm/pwm-lpc32xx.c +++ b/drivers/pwm/pwm-lpc32xx.c @@ -51,7 +51,11 @@ static int lpc32xx_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, c = 256 * duty_ns; do_div(c, period_ns); - duty_cycles = c; + if (c == 0) + c = 256; + if (c > 255) + c = 255; + duty_cycles = 256 - c; writel(PWM_ENABLE | PWM_RELOADV(period_cycles) | PWM_DUTY(duty_cycles), lpc32xx->base + (pwm->hwpwm << 2)); -- 1.7.0.4 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH] pwm: lpc32xx - Fix the PWM polarity 2012-11-07 15:25 ` Alban Bedel @ 2012-11-07 15:58 ` Alexandre Pereira da Silva 2012-11-08 9:51 ` Roland Stigge 1 sibling, 0 replies; 13+ messages in thread From: Alexandre Pereira da Silva @ 2012-11-07 15:58 UTC (permalink / raw) To: Alban Bedel; +Cc: Thierry Reding, LKML, Roland Stigge On Wed, Nov 7, 2012 at 1:25 PM, Alban Bedel <alban.bedel@avionic-design.de> wrote: > Signed-off-by: Alban Bedel <alban.bedel@avionic-design.de> Acked-by: Alexandre Pereira da Silva <aletes.xgr@gmail.com> > --- > drivers/pwm/pwm-lpc32xx.c | 6 +++++- > 1 files changed, 5 insertions(+), 1 deletions(-) > > diff --git a/drivers/pwm/pwm-lpc32xx.c b/drivers/pwm/pwm-lpc32xx.c > index adb87f0..0dc278d 100644 > --- a/drivers/pwm/pwm-lpc32xx.c > +++ b/drivers/pwm/pwm-lpc32xx.c > @@ -51,7 +51,11 @@ static int lpc32xx_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, > > c = 256 * duty_ns; > do_div(c, period_ns); > - duty_cycles = c; > + if (c == 0) > + c = 256; > + if (c > 255) > + c = 255; > + duty_cycles = 256 - c; > > writel(PWM_ENABLE | PWM_RELOADV(period_cycles) | PWM_DUTY(duty_cycles), > lpc32xx->base + (pwm->hwpwm << 2)); > -- > 1.7.0.4 > ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] pwm: lpc32xx - Fix the PWM polarity 2012-11-07 15:25 ` Alban Bedel 2012-11-07 15:58 ` Alexandre Pereira da Silva @ 2012-11-08 9:51 ` Roland Stigge 2012-11-08 10:33 ` Alban Bedel 1 sibling, 1 reply; 13+ messages in thread From: Roland Stigge @ 2012-11-08 9:51 UTC (permalink / raw) To: Alban Bedel; +Cc: Thierry Reding, LKML, Alexandre Pereira da Silva On 07/11/12 16:25, Alban Bedel wrote: > Signed-off-by: Alban Bedel <alban.bedel@avionic-design.de> > --- > drivers/pwm/pwm-lpc32xx.c | 6 +++++- > 1 files changed, 5 insertions(+), 1 deletions(-) > > diff --git a/drivers/pwm/pwm-lpc32xx.c b/drivers/pwm/pwm-lpc32xx.c > index adb87f0..0dc278d 100644 > --- a/drivers/pwm/pwm-lpc32xx.c > +++ b/drivers/pwm/pwm-lpc32xx.c > @@ -51,7 +51,11 @@ static int lpc32xx_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, > > c = 256 * duty_ns; > do_div(c, period_ns); > - duty_cycles = c; > + if (c == 0) > + c = 256; > + if (c > 255) > + c = 255; > + duty_cycles = 256 - c; Except for the range check (for the original c > 255), this results in: duty_cycles = 256 - c except for (c == 0) where duty_cycles = 1 which actually is duty_cycles = (256 - c) - 255 (think with the original c) i.e. nearly a polarity inversion in the case of (c == 0). Why is the case (c == 0) so special here? Maybe you can document this, if it is really intended? > > writel(PWM_ENABLE | PWM_RELOADV(period_cycles) | PWM_DUTY(duty_cycles), > lpc32xx->base + (pwm->hwpwm << 2)); ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] pwm: lpc32xx - Fix the PWM polarity 2012-11-08 9:51 ` Roland Stigge @ 2012-11-08 10:33 ` Alban Bedel 2012-11-08 10:44 ` Roland Stigge 0 siblings, 1 reply; 13+ messages in thread From: Alban Bedel @ 2012-11-08 10:33 UTC (permalink / raw) To: Roland Stigge; +Cc: Thierry Reding, LKML, Alexandre Pereira da Silva On Thu, 08 Nov 2012 10:51:35 +0100 Roland Stigge <stigge@antcom.de> wrote: > On 07/11/12 16:25, Alban Bedel wrote: > > Signed-off-by: Alban Bedel <alban.bedel@avionic-design.de> > > --- > > drivers/pwm/pwm-lpc32xx.c | 6 +++++- > > 1 files changed, 5 insertions(+), 1 deletions(-) > > > > diff --git a/drivers/pwm/pwm-lpc32xx.c b/drivers/pwm/pwm-lpc32xx.c > > index adb87f0..0dc278d 100644 > > --- a/drivers/pwm/pwm-lpc32xx.c > > +++ b/drivers/pwm/pwm-lpc32xx.c > > @@ -51,7 +51,11 @@ static int lpc32xx_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, > > > > c = 256 * duty_ns; > > do_div(c, period_ns); > > - duty_cycles = c; > > + if (c == 0) > > + c = 256; > > + if (c > 255) > > + c = 255; > > + duty_cycles = 256 - c; > > Except for the range check (for the original c > 255), this results in: > > duty_cycles = 256 - c > > except for (c == 0) where > > duty_cycles = 1 No it lead to duty_cycles = 0 > which actually is > > duty_cycles = (256 - c) - 255 > > (think with the original c) > > i.e. nearly a polarity inversion in the case of (c == 0). > > Why is the case (c == 0) so special here? Maybe you can document this, > if it is really intended? It is intended, the formular for duty value in the register is: duty = (256 - 256*duty_ns/period_ns) % 256 But the code avoid the modulo by clamping '256*duty_ns/period_ns' to 1-256. Perhaps something like: if (c > 255) c = 255; duty_cycles = (256 - c) % 256; would be easier to understand. Alban ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] pwm: lpc32xx - Fix the PWM polarity 2012-11-08 10:33 ` Alban Bedel @ 2012-11-08 10:44 ` Roland Stigge 2012-11-08 11:23 ` Alban Bedel 0 siblings, 1 reply; 13+ messages in thread From: Roland Stigge @ 2012-11-08 10:44 UTC (permalink / raw) To: Alban Bedel; +Cc: Thierry Reding, LKML, Alexandre Pereira da Silva On 08/11/12 11:33, Alban Bedel wrote: > On Thu, 08 Nov 2012 10:51:35 +0100 > Roland Stigge <stigge@antcom.de> wrote: > >> On 07/11/12 16:25, Alban Bedel wrote: >>> Signed-off-by: Alban Bedel <alban.bedel@avionic-design.de> >>> --- >>> drivers/pwm/pwm-lpc32xx.c | 6 +++++- >>> 1 files changed, 5 insertions(+), 1 deletions(-) >>> >>> diff --git a/drivers/pwm/pwm-lpc32xx.c b/drivers/pwm/pwm-lpc32xx.c >>> index adb87f0..0dc278d 100644 >>> --- a/drivers/pwm/pwm-lpc32xx.c >>> +++ b/drivers/pwm/pwm-lpc32xx.c >>> @@ -51,7 +51,11 @@ static int lpc32xx_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, >>> >>> c = 256 * duty_ns; >>> do_div(c, period_ns); >>> - duty_cycles = c; >>> + if (c == 0) >>> + c = 256; >>> + if (c > 255) >>> + c = 255; >>> + duty_cycles = 256 - c; >> >> Except for the range check (for the original c > 255), this results in: >> >> duty_cycles = 256 - c >> >> except for (c == 0) where >> >> duty_cycles = 1 > > No it lead to duty_cycles = 0 Let's do it step by step with the above code: c == 0 >>> + if (c == 0) >>> + c = 256; c == 256 >>> + if (c > 255) >>> + c = 255; c == 255 >>> + duty_cycles = 256 - c; c == 1 See? > >> which actually is >> >> duty_cycles = (256 - c) - 255 >> >> (think with the original c) >> >> i.e. nearly a polarity inversion in the case of (c == 0). >> >> Why is the case (c == 0) so special here? Maybe you can document this, >> if it is really intended? > > It is intended, the formular for duty value in the register is: > > duty = (256 - 256*duty_ns/period_ns) % 256 Where does this modulo defined? In the Manual, there is sth. like this defined for RELOADV (tables 606+607), but not for DUTY. Maybe I missed sth. in the manual. Link or hint appreciated! Thanks, Roland ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] pwm: lpc32xx - Fix the PWM polarity 2012-11-08 10:44 ` Roland Stigge @ 2012-11-08 11:23 ` Alban Bedel 2012-11-08 11:46 ` Alban Bedel 2012-11-08 13:12 ` Roland Stigge 0 siblings, 2 replies; 13+ messages in thread From: Alban Bedel @ 2012-11-08 11:23 UTC (permalink / raw) To: Roland Stigge Cc: Thierry Reding, LKML, Alexandre Pereira da Silva, Alban Bedel On Thu, 08 Nov 2012 11:44:48 +0100 Roland Stigge <stigge@antcom.de> wrote: > On 08/11/12 11:33, Alban Bedel wrote: > > On Thu, 08 Nov 2012 10:51:35 +0100 > > Roland Stigge <stigge@antcom.de> wrote: > > > >> On 07/11/12 16:25, Alban Bedel wrote: > >>> Signed-off-by: Alban Bedel <alban.bedel@avionic-design.de> > >>> --- > >>> drivers/pwm/pwm-lpc32xx.c | 6 +++++- > >>> 1 files changed, 5 insertions(+), 1 deletions(-) > >>> > >>> diff --git a/drivers/pwm/pwm-lpc32xx.c b/drivers/pwm/pwm-lpc32xx.c > >>> index adb87f0..0dc278d 100644 > >>> --- a/drivers/pwm/pwm-lpc32xx.c > >>> +++ b/drivers/pwm/pwm-lpc32xx.c > >>> @@ -51,7 +51,11 @@ static int lpc32xx_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, > >>> > >>> c = 256 * duty_ns; > >>> do_div(c, period_ns); > >>> - duty_cycles = c; > >>> + if (c == 0) > >>> + c = 256; > >>> + if (c > 255) > >>> + c = 255; > >>> + duty_cycles = 256 - c; > >> > >> Except for the range check (for the original c > 255), this results in: > >> > >> duty_cycles = 256 - c > >> > >> except for (c == 0) where > >> > >> duty_cycles = 1 > > > > No it lead to duty_cycles = 0 > > Let's do it step by step with the above code: > > c == 0 > > >>> + if (c == 0) > >>> + c = 256; > > c == 256 > > >>> + if (c > 255) > >>> + c = 255; > > c == 255 > > >>> + duty_cycles = 256 - c; > > c == 1 > > See? Right, my bad. > > > >> which actually is > >> > >> duty_cycles = (256 - c) - 255 > >> > >> (think with the original c) > >> > >> i.e. nearly a polarity inversion in the case of (c == 0). > >> > >> Why is the case (c == 0) so special here? Maybe you can document this, > >> if it is really intended? > > > > It is intended, the formular for duty value in the register is: > > > > duty = (256 - 256*duty_ns/period_ns) % 256 > > Where does this modulo defined? In the Manual, there is sth. like this > defined for RELOADV (tables 606+607), but not for DUTY. > > Maybe I missed sth. in the manual. Link or hint appreciated! The manual doesn't mention this explicitly but you can see that without the modulo when duty_ns==0 DUTY would be 256, but the register is only 8 bits wide (ie. modulo 256). I made a few test and looked at the PWM output on a scope they confirm this: DUTY HIGH LEVEL 1 99.9% 25 90.0% 128 50.0% 220 10.0% 255 0.1% 0 0.0% I'll resubmit the patch with the clamping in the correct order. Alban ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH] pwm: lpc32xx - Fix the PWM polarity 2012-11-08 11:23 ` Alban Bedel @ 2012-11-08 11:46 ` Alban Bedel 2012-11-08 13:12 ` Roland Stigge 1 sibling, 0 replies; 13+ messages in thread From: Alban Bedel @ 2012-11-08 11:46 UTC (permalink / raw) To: Roland Stigge Cc: Thierry Reding, LKML, Alexandre Pereira da Silva, Alban Bedel The duty cycles value goes from 1 (99% HIGH) to 256 (0% HIGH) but it is stored modulo 256 in the register as it is only 8 bits wide. Signed-off-by: Alban Bedel <alban.bedel@avionic-design.de> --- drivers/pwm/pwm-lpc32xx.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-) diff --git a/drivers/pwm/pwm-lpc32xx.c b/drivers/pwm/pwm-lpc32xx.c index adb87f0..2590f8d 100644 --- a/drivers/pwm/pwm-lpc32xx.c +++ b/drivers/pwm/pwm-lpc32xx.c @@ -51,7 +51,9 @@ static int lpc32xx_pwm_config(struct pwm_chip *chip, struct pwm_device *pwm, c = 256 * duty_ns; do_div(c, period_ns); - duty_cycles = c; + if (c > 255) + c = 255; + duty_cycles = 256 - c; writel(PWM_ENABLE | PWM_RELOADV(period_cycles) | PWM_DUTY(duty_cycles), lpc32xx->base + (pwm->hwpwm << 2)); -- 1.7.0.4 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH] pwm: lpc32xx - Fix the PWM polarity 2012-11-08 11:23 ` Alban Bedel 2012-11-08 11:46 ` Alban Bedel @ 2012-11-08 13:12 ` Roland Stigge 2012-11-08 13:49 ` Alexandre Pereira da Silva 1 sibling, 1 reply; 13+ messages in thread From: Roland Stigge @ 2012-11-08 13:12 UTC (permalink / raw) To: Alban Bedel; +Cc: Thierry Reding, LKML, Alexandre Pereira da Silva On 08/11/12 12:23, Alban Bedel wrote: >>> It is intended, the formular for duty value in the register is: >>> >>> duty = (256 - 256*duty_ns/period_ns) % 256 >> >> Where does this modulo defined? In the Manual, there is sth. like this >> defined for RELOADV (tables 606+607), but not for DUTY. >> >> Maybe I missed sth. in the manual. Link or hint appreciated! > > The manual doesn't mention this explicitly but you can see that without > the modulo when duty_ns==0 DUTY would be 256, but the register is only > 8 bits wide (ie. modulo 256). I made a few test and looked at the PWM > output on a scope they confirm this: > > DUTY HIGH LEVEL > 1 99.9% > 25 90.0% > 128 50.0% > 220 10.0% > 255 0.1% > 0 0.0% > > I'll resubmit the patch with the clamping in the correct order. Thanks for measuring. With this, your resubmitted patch make much more sense now. Roland ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] pwm: lpc32xx - Fix the PWM polarity 2012-11-08 13:12 ` Roland Stigge @ 2012-11-08 13:49 ` Alexandre Pereira da Silva 0 siblings, 0 replies; 13+ messages in thread From: Alexandre Pereira da Silva @ 2012-11-08 13:49 UTC (permalink / raw) To: Roland Stigge; +Cc: Alban Bedel, Thierry Reding, LKML On Thu, Nov 8, 2012 at 11:12 AM, Roland Stigge <stigge@antcom.de> wrote: > On 08/11/12 12:23, Alban Bedel wrote: >>>> It is intended, the formular for duty value in the register is: >>>> >>>> duty = (256 - 256*duty_ns/period_ns) % 256 >>> >>> Where does this modulo defined? In the Manual, there is sth. like this >>> defined for RELOADV (tables 606+607), but not for DUTY. >>> >>> Maybe I missed sth. in the manual. Link or hint appreciated! >> >> The manual doesn't mention this explicitly but you can see that without >> the modulo when duty_ns==0 DUTY would be 256, but the register is only >> 8 bits wide (ie. modulo 256). I made a few test and looked at the PWM >> output on a scope they confirm this: >> >> DUTY HIGH LEVEL >> 1 99.9% >> 25 90.0% >> 128 50.0% >> 220 10.0% >> 255 0.1% >> 0 0.0% >> >> I'll resubmit the patch with the clamping in the correct order. > > Thanks for measuring. With this, your resubmitted patch make much more > sense now. > > Roland Alban, I think you should include this measurements on the source code as comments, for future reference. Thanks. ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2012-11-08 13:49 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-11-05 16:48 [PATCH] pwm: lpc32xx - Fix the PWM polarity Alban Bedel
2012-11-05 21:03 ` Thierry Reding
2012-11-06 9:36 ` Roland Stigge
[not found] ` <CAAAP30HwBzYFpy942UyiQX2SkzV4naBbhwichp201bvfEm2mxA@mail.gmail.com>
2012-11-06 17:19 ` Alban Bedel
2012-11-07 15:25 ` Alban Bedel
2012-11-07 15:58 ` Alexandre Pereira da Silva
2012-11-08 9:51 ` Roland Stigge
2012-11-08 10:33 ` Alban Bedel
2012-11-08 10:44 ` Roland Stigge
2012-11-08 11:23 ` Alban Bedel
2012-11-08 11:46 ` Alban Bedel
2012-11-08 13:12 ` Roland Stigge
2012-11-08 13:49 ` Alexandre Pereira da Silva
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).