Commit 16d8ce519c introduced changes
that caused this sample to no longer behave according to documentation
and for some hardware to no longer work at all.
On nRF51 SoCs for instance, the reported number of cycles per second
is 16M, what makes the calculated max_period and min_period to be 16
and 0 microseconds, respectively, what effectively makes it impossible
for the sample to return to the initial blinking frequency. Moreover,
with such short PWM periods, the blinking is not even noticeable.
This patch partially reverts the changes mentioned above, and instead
of calculating max_period and min_period basing on the reported clock
rate, it tries to only decrease the max_period if needed, accordingly
to what the used hardware can handle.
Documentation is also updated to mention the possible change in
observed behavior of the sample on some hardware.
Signed-off-by: Andrzej Głąbek <andrzej.glabek@nordicsemi.no>
64 lines
1.8 KiB
ReStructuredText
64 lines
1.8 KiB
ReStructuredText
.. _blink-led-sample:
|
|
|
|
PWM: Blink LED
|
|
##############
|
|
|
|
Overview
|
|
********
|
|
|
|
This is a sample app which blinks a LED using PWM.
|
|
|
|
The LED will start at a blinking frequency of 1 Hz. Every 4 seconds,
|
|
the blinking frequency will double. When the blinking frequency
|
|
reaches 64 Hz, the blinking frequency will be halved every 4 seconds
|
|
until the blinking frequency reaches 1 Hz. This completes a whole
|
|
blinking cycle. This faster-then-slower LED blinking cycle repeats forever.
|
|
|
|
Since for some PWM hardware it might be not possible to set the PWM period of
|
|
1 second (to achieve the blinking frequency of 1 Hz), this application at its
|
|
beginning tries to determine what is available for the used PWM hardware,
|
|
and accordingly decreases the maximum PWM period (thus increases the initial
|
|
blinking frequency) if needed.
|
|
|
|
|
|
Wiring
|
|
******
|
|
|
|
Nucleo_F401RE, Nucleo_L476RG, STM32F4_DISCOVERY, Nucleo_F302R8
|
|
==============================================================
|
|
Connect PWM2(PA0) to LED
|
|
|
|
Nucleo_F103RB
|
|
=============
|
|
Connect PWM1(PA8) to LED
|
|
|
|
Nucleo_L496ZG
|
|
=============
|
|
No special board setup is necessary because there are three on-board LEDs (red,
|
|
green, blue) connected to the Nucleo's PWM.
|
|
|
|
Hexiwear K64
|
|
============
|
|
No special board setup is necessary because there is an on-board RGB LED
|
|
connected to the K64 PWM.
|
|
|
|
nrf52840_pca10056
|
|
=================
|
|
No special board setup is necessary because there is an on-board LED connected.
|
|
|
|
Building and Running
|
|
********************
|
|
|
|
This sample can be built for multiple boards, in this example we will build it
|
|
for the nrf52840_pca10056 board:
|
|
|
|
.. zephyr-app-commands::
|
|
:zephyr-app: samples/basic/blink_led
|
|
:board: nrf52840_pca10056
|
|
:goals: build flash
|
|
:compact:
|
|
|
|
After flashing the image to the board, the user LED on the board should start to
|
|
blinking as discussed in overview
|
|
|