aboutsummaryrefslogtreecommitdiffstats
path: root/docs/source/pwm.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/source/pwm.rst')
-rw-r--r--docs/source/pwm.rst103
1 files changed, 0 insertions, 103 deletions
diff --git a/docs/source/pwm.rst b/docs/source/pwm.rst
deleted file mode 100644
index 34ad508..0000000
--- a/docs/source/pwm.rst
+++ /dev/null
@@ -1,103 +0,0 @@
-.. _pwm:
-
-PWM
-===
-
-Pulse Width Modulation (PWM) is a basic technique to create repeated square
-waves (digital high/low voltage transitions) of user defined length
-and duty cycle. It can be used as a way to encode an "analog" signal
-on a single digital (high/low) line using the time between transitions
-("pulse width") as the variable; this technique is commonly used to
-send servo position and motor speed commands. Another use is to use to
-the ratio of "high" and "low" time to approximate a voltage output;
-this technique can be used to dim an LED or even (with careful
-filtering) generate audio waveforms.
-
-.. contents:: Contents
- :local:
-
-Overview
---------
-
-.. FIXME [0.1.0] More information about how timer channels drive PWM
-
-Each PWM output is driven by an output channel connected to one of 4
-timers. Some configuration, such as the clock rate or prescaling,
-must be common to the entire timer; see the :ref:`timer documentation
-<timers>` for more information. See your board's :ref:`pin mapping
-tables <gpio-pin-maps>` to track down the correspondence
-between timer channels and GPIO pins.
-
-Background
-----------
-
-In its simplest form, the device is a single counter with two
-variables. The counter starts at zero, and the output starts at
-"high". The counter increments every clock cycle until it reaches the
-first variable number, at which point the output goes "low". The
-counter continues incrementing until it reaches the second variable at
-which point the output goes "high" again and the counter resets to
-zero. The time spent with output high is called the **pulse duration**
-or **duty**; the total time before repeat is the **period**.
-
-This simple functionality could be approximated in software by setting
-a GPIO high or low, but the beauty of PWM is that user code simply has
-to configure the device and set the two variables and the device will
-function on its own; no further microprocessor cycles will be
-consumed, and a repeated high/low waveform will spew out.
-
-The Maple has 16-bit PWM resolution, which means that the counter and
-variables can be as large as 65535, as opposed to 255 with 8-bit
-resolution. With a 72MHz clock rate, a PWM output could have maximum
-period of about one millisecond; using a :ref:`prescaler
-<lang-hardwaretimer-setprescalefactor>` (clock divider) in front of
-the counter can increase this maximum period. Setting the
-:ref:`period <lang-hardwaretimer-setperiod>` to something other than
-the maximum value gives further control over the total length of the
-waveform. However, this effectively limits the resolution with which
-the duty can be modified: the duty must be less than or equal to the
-period.
-
-Here are some commonly used PWM configurations (note that servos are
-notoriously variable, especially the lower cost models):
-
-+-------------+----------+-----------+---------+---------------+------+
-|**Purpose** |**Period**|**Duty** |Prescaler|Period |Duty |
-| |(ms) |(ms) | | | |
-+=============+==========+===========+=========+===============+======+
-|LED throb |0.020 |0--0.020 |1 (none) |65535 (default)|0--767|
-| | | | | | |
-+-------------+----------+-----------+---------+---------------+------+
-|Servo control|20 |1.25 (0°) |21 |65535 (default)|4096 |
-| | | | | | |
-| | |1.50 (90°) |21 |65535 (default)|4915 |
-| | | | | | |
-| | |1.75 (180°)|21 |65535 (default)|5734 |
-| | | | | | |
-+-------------+----------+-----------+---------+---------------+------+
-
-Function Reference
-------------------
-
-- :ref:`lang-pinmode`
-- :ref:`lang-pwmwrite`
-- :ref:`Timer API<lang-hardwaretimer>` (especially :ref:`setOverflow()
- <lang-hardwaretimer-setoverflow>`, :ref:`setPrescaleFactor()
- <lang-hardwaretimer-setprescalefactor>`, and :ref:`setPeriod()
- <lang-hardwaretimer-setperiod>`).
-- :ref:`Timers reference <timers>`.
-
-Recommended Reading
--------------------
-
-* `Wikipedia Article on Pulse-width modulation
- <http://en.wikipedia.org/wiki/Pulse-width_modulation>`_
-* `Arduino tutorial on PWM <http://www.arduino.cc/en/Tutorial/PWM>`_
-* `Secrets of Arduino PWM
- <http://www.arcfn.com/2009/07/secrets-of-arduino-pwm.html>`_ by Ken
- Shirriff
-* `So You Want To Use PWM, Eh? <http://www.arcfn.com/2009/07/secrets-of-arduino-pwm.html>`_ at Non-Lexical Vocables
-* STMicro documentation for STM32F103RB microcontroller:
-
- * `Datasheet <http://www.st.com/stonline/products/literature/ds/13587.pdf>`_ (pdf)
- * `Reference Manual <http://www.st.com/stonline/products/literature/rm/13902.pdf>`_ (pdf)