I have been investigating the BAM method of LED dimming. There are already many microcontroller programs written to control a LED or multiple LEDs with BAM, however I wanted to fully understand the method so I threw together some SPIN code to prove it would work. Click the Read more link for details on the code.
This is the main output loop. It reads the variable "bam" and turns the output (pin 16) on if that bit of the variable is a 1. It repeats each bit of the variable a different number of times to keep the output on longer for the bits that represent a larger number. By doing so it can keep the LED an practically any brightness level.
Since the propeller has multiple cogs this loop can run in a cog completely separate from the code that will calculate what value the variable needs to be to provide the proper output.
In order to test the main loop I created a simple fade in and out sequence that slowly turns the LED on, and then turns the LED off in a slightly faster manner.
You can download the code below.
This blog covers a multitude of up and coming technology, as well as how to guides, tips and tricks, and other interesting technology related items.