センサー動作確認版
Dependencies: MPU9150_DMP QuaternionMath iSDIO mbed-rtos mbed
Diff: taskLed.cpp
- Revision:
- 0:65a0ae5578da
- Child:
- 1:73543a1fbe62
diff -r 000000000000 -r 65a0ae5578da taskLed.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/taskLed.cpp Sat May 14 07:11:48 2016 +0000 @@ -0,0 +1,266 @@ +#include "mbed.h" +#include "math.h" +#include "rtos.h" +#include "gpio_defs.h" +#include "configure.h" + + +// Clock 72MHz +// 0.35us : NOP*25.2 +// 0.8us : 57.6 +// 0.7us : 50.4 +// 0.6us : 43.2 + +inline void sleep0_35us(void) +{ + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); +#if 0 + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); +#endif +} +inline void sleep0_8us(void) +{ + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); +#if 0 + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); +#endif +} + +inline void sleep0_7us(void) +{ + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); +#if 0 + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); +#endif +} + +inline void sleep0_6us(void) +{ + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); +#if 0 + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); + asm("nop"); +#endif +} + +inline void led_bit_0(void){ + pinLed = 1; + sleep0_35us(); + pinLed = 0; + sleep0_8us(); +} + +inline void led_bit_1(void){ + pinLed = 1; + sleep0_7us(); + pinLed = 0; + sleep0_6us(); +} + + +void TaskLed(void const *argument) +{ + int i; + int j; + int k; + int8_t val = 255; + + while(1){ + StatusLED = 1; + Thread::wait(100); + StatusLED = 0; + Thread::wait(100); + + for(i=0;i<NUMBER_OF_LEDS;i++){ + for(j=0;j<3;j++){ + for(k=0;k<8;k++){ + if((val >> (7-k)) & 0x01){ + led_bit_1(); + } else { + led_bit_0(); + } + } + } + } + val-=20; + } +} +/* + * WS2812 tape led IC + * + * 0.35us 0.8us (+-150ns) + * 0: |^^^^^|__________| + * + * 0.7us 0.6us (+-150ns) + * 1: |^^^^^^^^^^|_____| + * + * >50us + * RESET: |________________| + */ +