diff --git a/boards/arm/rpi_pico/rpi_pico.dts b/boards/arm/rpi_pico/rpi_pico.dts index 2bb675cd023bf..20fc1b09f2fda 100644 --- a/boards/arm/rpi_pico/rpi_pico.dts +++ b/boards/arm/rpi_pico/rpi_pico.dts @@ -40,8 +40,8 @@ pwm_leds { compatible = "pwm-leds"; + status = "disabled"; pwm_led0: pwm_led_0 { - status = "disabled"; pwms = <&pwm 9 PWM_MSEC(20) PWM_POLARITY_NORMAL>; label = "PWM_LED"; }; diff --git a/drivers/pwm/pwm_rpi_pico.c b/drivers/pwm/pwm_rpi_pico.c index be540a8730fed..4b23cc558f15b 100644 --- a/drivers/pwm/pwm_rpi_pico.c +++ b/drivers/pwm/pwm_rpi_pico.c @@ -100,7 +100,7 @@ static int pwm_rpi_set_cycles(const struct device *dev, uint32_t ch, uint32_t pe return -EINVAL; } - if (period_cycles > PWM_RPI_PICO_COUNTER_TOP_MAX || + if (period_cycles - 1 > PWM_RPI_PICO_COUNTER_TOP_MAX || pulse_cycles > PWM_RPI_PICO_COUNTER_TOP_MAX) { return -EINVAL; } @@ -112,7 +112,7 @@ static int pwm_rpi_set_cycles(const struct device *dev, uint32_t ch, uint32_t pe pwm_rpi_set_channel_polarity(dev, slice, pico_channel, (flags & PWM_POLARITY_MASK) == PWM_POLARITY_INVERTED); - pwm_set_wrap(slice, period_cycles); + pwm_set_wrap(slice, period_cycles - 1); pwm_set_chan_level(slice, pico_channel, pulse_cycles); return 0; diff --git a/samples/basic/blinky_pwm/boards/rpi_pico.overlay b/samples/basic/blinky_pwm/boards/rpi_pico.overlay index 45621c8ea8b60..c3a3f1ff5d391 100644 --- a/samples/basic/blinky_pwm/boards/rpi_pico.overlay +++ b/samples/basic/blinky_pwm/boards/rpi_pico.overlay @@ -4,6 +4,6 @@ &pwm { status = "okay"; - divider-frac-4 = <255>; + divider-frac-4 = <15>; divider-int-4 = <255>; }; diff --git a/samples/basic/blinky_pwm/src/main.c b/samples/basic/blinky_pwm/src/main.c index fb4b7e2741c81..102e8a220f10c 100644 --- a/samples/basic/blinky_pwm/src/main.c +++ b/samples/basic/blinky_pwm/src/main.c @@ -53,7 +53,7 @@ void main(void) } } - printk("Done calibrating; maximum/minimum periods %u/%lu usec\n", + printk("Done calibrating; maximum/minimum periods %u/%lu nsec\n", max_period, MIN_PERIOD); period = max_period; diff --git a/samples/basic/fade_led/boards/rpi_pico.overlay b/samples/basic/fade_led/boards/rpi_pico.overlay new file mode 100644 index 0000000000000..62c3a142cd4a6 --- /dev/null +++ b/samples/basic/fade_led/boards/rpi_pico.overlay @@ -0,0 +1,4 @@ +&pwm { + status = "okay"; + divider-int-4 = <255>; +}; diff --git a/samples/drivers/led_pwm/boards/rpi_pico.overlay b/samples/drivers/led_pwm/boards/rpi_pico.overlay index 45621c8ea8b60..565dcd6fbbab9 100644 --- a/samples/drivers/led_pwm/boards/rpi_pico.overlay +++ b/samples/drivers/led_pwm/boards/rpi_pico.overlay @@ -1,9 +1,15 @@ -&pwm_led0 { - status = "okay"; +/ { + leds { + status = "disabled"; + }; + + pwm_leds { + status = "okay"; + }; }; &pwm { status = "okay"; - divider-frac-4 = <255>; + divider-frac-4 = <15>; divider-int-4 = <255>; }; diff --git a/samples/drivers/led_pwm/prj.conf b/samples/drivers/led_pwm/prj.conf index 9faba6b41f24a..b6286f0aa56aa 100644 --- a/samples/drivers/led_pwm/prj.conf +++ b/samples/drivers/led_pwm/prj.conf @@ -3,3 +3,5 @@ CONFIG_LOG=y CONFIG_PWM=y CONFIG_LED=y + +CONFIG_LOG_MODE_IMMEDIATE=y