WS2812B
Dependents: high speed light Bracelet
Fork of PololuLedStrip by
Diff: PololuLedStrip.cpp
- Revision:
- 6:9d0530b7dae2
- Parent:
- 4:d3b60bd43811
- Child:
- 7:9a088f042ee0
diff -r 690fdfb595de -r 9d0530b7dae2 PololuLedStrip.cpp --- a/PololuLedStrip.cpp Fri Mar 01 00:05:26 2013 +0000 +++ b/PololuLedStrip.cpp Fri Mar 01 00:31:24 2013 +0000 @@ -5,6 +5,8 @@ // TODO: read clock frequency from SystemCoreClock and use that to make this work on different boards. // calculate the three delays needed and pass them to the assembly. The assembly can implement them with computed jumps. +uint8_t led_strip_write_delays[3]; + PololuLedStrip::PololuLedStrip(PinName pinName) { gpio_init(&gpio, pinName, PIN_OUTPUT); @@ -14,6 +16,12 @@ { __disable_irq(); // Disable interrupts temporarily because we don't want our pulse timing to be messed up. + int f = SystemCoreClock/1000000; + led_strip_write_delays[0] = 700*f/1000 - 10; + led_strip_write_delays[1] = 600*f/1000 - 10; + led_strip_write_delays[2] = 1200*f/1000 - 10; + led_strip_write_delays[0] = 59; + while(count--) { led_strip_write_color(colors++, gpio.reg_set, gpio.reg_clr, gpio.mask);