% !TEX root = master.tex
\subsubsection{Improved STM32 WS2812B Library}
The author of this article discusses multiple methods of driving the WS2812B chips which require custom code to communicate with due to their pseudo PWM signal requirements. The implementation that the author pursues is essentially using timer driven interrupts to force the direct memory access (DMA) module to trigger fast data transfers to the general purpose input output pins (GPIO). By using this method, the total number of lines able to be driven using this method is 16, each line carrying a maximum of 1024 LEDs, thus further resulting in a total of 16,384 RGB LEDs able to be driven by a single microcontroller. Therefore it is easy to see the possible uses of this method, though the implementation is hardly easy or the most efficient. The issues posed by this method is the jitter on the output caused by using interrupts to drive the code, which falls within safety margins as the interrupts are short enough. The next issue is the probably of overhead, as a read-modify-write command to change individual bits is a costly operation which the author sidesteps as the hardware provides atomic access to bits thus resulting in a single operation to change a bit. This optimization alone is why this method is viable in driving the LEDs chips, as the interrupts and context switching add overhead on their own. The end result is a method viable for re-purposing in the final Smart Table product.
\cite{SimProjects:ParallelLines}
