Ned Konz / Mbed 2 deprecated Multi_WS2811_test

Dependencies:   Multi_WS2811 mbed MMA8451Q

Fork of WS2811 by Heroic Robotics

Committer:
bikeNomad
Date:
Thu Jan 02 19:42:14 2014 +0000
Revision:
25:751c89f7e654
Parent:
23:33df42ff2541
Child:
30:52e9205a8059
added second light strip to demo.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bikeNomad 22:abfed71656bd 1 // Mbed library to control WS2801-based RGB LED Strips
bikeNomad 22:abfed71656bd 2 // some portions (c) 2011 Jelmer Tiete
bikeNomad 22:abfed71656bd 3 // This library is ported from the Arduino implementation of Adafruit Industries
bikeNomad 22:abfed71656bd 4 // found at: http://github.com/adafruit/LPD8806
bikeNomad 22:abfed71656bd 5 // and their strips: http://www.adafruit.com/products/306
bikeNomad 22:abfed71656bd 6 // Released under the MIT License: http://mbed.org/license/mit
bikeNomad 22:abfed71656bd 7 //
bikeNomad 22:abfed71656bd 8 /*****************************************************************************/
bikeNomad 22:abfed71656bd 9
bikeNomad 22:abfed71656bd 10 // Heavily modified by Jas Strong, 2012-10-04
bikeNomad 22:abfed71656bd 11 // Changed to use a virtual base class and to use software SPI.
bikeNomad 22:abfed71656bd 12 //
bikeNomad 22:abfed71656bd 13 // Modified by Ned Konz, December 2013.
bikeNomad 22:abfed71656bd 14 // Using three-phase DMA ala Paul Stoffegren's version.
bikeNomad 22:abfed71656bd 15
bikeNomad 22:abfed71656bd 16 #ifndef MBED_WS2811_H
bikeNomad 22:abfed71656bd 17 #define MBED_WS2811_H
bikeNomad 22:abfed71656bd 18
bikeNomad 22:abfed71656bd 19 #include "mbed.h"
bikeNomad 22:abfed71656bd 20 #include "LedStrip.h"
bikeNomad 22:abfed71656bd 21
bikeNomad 22:abfed71656bd 22 #define MAX_LEDS_PER_STRIP 60
bikeNomad 22:abfed71656bd 23
bikeNomad 23:33df42ff2541 24 extern "C" void DMA0_IRQHandler();
bikeNomad 23:33df42ff2541 25
bikeNomad 22:abfed71656bd 26 class WS2811 : public LedStrip
bikeNomad 22:abfed71656bd 27 {
bikeNomad 22:abfed71656bd 28 public:
bikeNomad 22:abfed71656bd 29 WS2811(unsigned n, unsigned pinNumber);
bikeNomad 21:4541da183397 30
bikeNomad 22:abfed71656bd 31 virtual void begin();
bikeNomad 22:abfed71656bd 32 virtual void show();
bikeNomad 22:abfed71656bd 33 virtual void blank();
bikeNomad 22:abfed71656bd 34
bikeNomad 23:33df42ff2541 35 static void startDMA();
bikeNomad 23:33df42ff2541 36 static bool is_dma_done();
bikeNomad 23:33df42ff2541 37
bikeNomad 22:abfed71656bd 38 private:
bikeNomad 22:abfed71656bd 39 uint32_t pinMask;
bikeNomad 22:abfed71656bd 40
bikeNomad 22:abfed71656bd 41 void writePixel(unsigned n, uint8_t *p);
bikeNomad 22:abfed71656bd 42
bikeNomad 22:abfed71656bd 43 // Class Static:
bikeNomad 22:abfed71656bd 44
bikeNomad 22:abfed71656bd 45 static bool initialized;
bikeNomad 22:abfed71656bd 46 static uint32_t enabledPins;
bikeNomad 23:33df42ff2541 47 static Timer guardtime;
bikeNomad 22:abfed71656bd 48
bikeNomad 22:abfed71656bd 49 static void writeByte(uint8_t byte, uint32_t mask, uint32_t *dest);
bikeNomad 22:abfed71656bd 50
bikeNomad 22:abfed71656bd 51 static void hw_init();
bikeNomad 22:abfed71656bd 52 static void io_init();
bikeNomad 22:abfed71656bd 53 static void clock_init();
bikeNomad 22:abfed71656bd 54 static void dma_init();
bikeNomad 22:abfed71656bd 55 static void tpm_init();
bikeNomad 22:abfed71656bd 56 static void dma_data_init();
bikeNomad 23:33df42ff2541 57
bikeNomad 23:33df42ff2541 58 friend void DMA0_IRQHandler();
bikeNomad 22:abfed71656bd 59 };
bikeNomad 22:abfed71656bd 60
bikeNomad 22:abfed71656bd 61 #endif
bikeNomad 22:abfed71656bd 62