aboutsummaryrefslogtreecommitdiff
path: root/fw/README.rst
blob: 1e81c46eeff48efd006d096667f72eec59b81168 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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