arranged by katano

Dependencies:   MPU9150_DMP Neon_F303K8 QuaternionMath iSDIO mbed-rtos mbed

Fork of Neon_F303K8 by Yasuhiro ISHII

Revision:
0:65a0ae5578da
Child:
1:73543a1fbe62
--- /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: |________________|
+ */
+