7seg/fw
2020-04-11 17:33:20 +02:00
..
tools Firmware directory reorganization 2018-01-05 11:53:52 +01:00
.gitignore Now with working source extraction from firmware 2017-09-01 20:52:34 +02:00
adc.c Split project into individual source files and add license 2018-01-05 12:23:24 +01:00
adc.h Split project into individual source files and add license 2018-01-05 12:23:24 +01:00
base.c working commit 2017-08-15 14:34:34 +02:00
display.c Split project into individual source files and add license 2018-01-05 12:23:24 +01:00
display.h Split project into individual source files and add license 2018-01-05 12:23:24 +01:00
global.h Add local changes 2020-04-11 17:33:20 +02:00
led.c Split project into individual source files and add license 2018-01-05 12:23:24 +01:00
led.h Split project into individual source files and add license 2018-01-05 12:23:24 +01:00
LICENSE Split project into individual source files and add license 2018-01-05 12:23:24 +01:00
mac.c Firmware directory reorganization 2018-01-05 11:53:52 +01:00
mac.h Add some documentation 2018-01-05 11:39:20 +01:00
main.c Split project into individual source files and add license 2018-01-05 12:23:24 +01:00
Makefile Split project into individual source files and add license 2018-01-05 12:23:24 +01:00
openocd.cfg Add missing firmware build files 2017-07-20 16:06:33 +02:00
README.rst Add some documentation 2018-01-05 11:39:20 +01:00
serial.c Small firmware foo 2018-04-20 14:04:16 +02:00
serial.h Split project into individual source files and add license 2018-01-05 12:23:24 +01:00
startup_stm32f030x6.s Add missing firmware build files 2017-07-20 16:06:33 +02:00
stm32_flash.ld Now with working source extraction from firmware 2017-09-01 20:52:34 +02:00
system_stm32f0xx.c fw working commit 2017-06-10 19:14:18 +02:00
transpose.c Add some documentation 2018-01-05 11:39:20 +01:00
transpose.h Add some documentation 2018-01-05 11:39:20 +01:00

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.