aboutsummaryrefslogtreecommitdiff
path: root/fw/README.rst
diff options
context:
space:
mode:
Diffstat (limited to 'fw/README.rst')
-rw-r--r--fw/README.rst20
1 files changed, 20 insertions, 0 deletions
diff --git a/fw/README.rst b/fw/README.rst
new file mode 100644
index 0000000..1e81c46
--- /dev/null
+++ b/fw/README.rst
@@ -0,0 +1,20 @@
+Note on the LED modulation
+==========================
+
+To control LED brightness, this project uses a modulation technique known as
+"Binary Code Modulation" (BCM) or "Bit Angle Modulation" (BAM). The base idea is
+to clock out all outputs in parallel bit-by-bit, then modulate this with a
+precisely timed output enable signal. In contrast to PWM this allows almost
+arbitrarily high channel counts and configurable modulation resolution at low
+CPU overhead and high frame rates. In this project that is needed due to the
+large number of channels (32) and the medium oversampling rate (1:8).
+
+A good article explaining BCM can be found on batsocks.co.uk_ and a nice video
+explaining has been published by mikeselectricstuff_. A possible optimization
+for even smoother brightness fading (probably mostly in unmultiplexed
+applications) has been discussed in the forums at picbasic.co.uk_.
+
+.. _mikeselectricstuff: https://www.youtube.com/watch?v=Sq8SxVDO5wE
+.. _`picbasic.co.uk`: http://www.picbasic.co.uk/forum/showthread.php?t=7393
+.. _batsocks.co.uk: http://www.batsocks.co.uk/readme/art_bcm_1.htm
+