yasuo katano / Mbed 2 deprecated Neon_F303K8_04

Dependencies:   MPU9150_DMP Neon_F303K8 QuaternionMath iSDIO mbed-rtos mbed

Fork of Neon_F303K8 by Yasuhiro ISHII

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers taskLed.cpp Source File

taskLed.cpp

00001 #include "mbed.h"
00002 #include "math.h"
00003 #include "rtos.h"
00004 #include "gpio_defs.h"
00005 #include "configure.h"
00006 
00007 
00008 // Clock 72MHz
00009 // 0.35us : NOP*25.2
00010 // 0.8us  :     57.6
00011 // 0.7us  :     50.4
00012 // 0.6us  :     43.2
00013 
00014 inline void sleep0_35us(void)
00015 {
00016     asm("nop");
00017     asm("nop");
00018     asm("nop");
00019     asm("nop");
00020     asm("nop");
00021     asm("nop");
00022     asm("nop");
00023 
00024 }
00025 inline void sleep0_8us(void)
00026 {
00027     asm("nop");
00028     asm("nop");
00029     asm("nop");
00030     asm("nop");
00031     asm("nop");
00032     asm("nop");
00033     asm("nop");
00034     asm("nop");
00035     asm("nop");
00036     asm("nop");
00037     asm("nop");
00038     asm("nop");
00039     asm("nop");
00040     asm("nop");
00041     asm("nop");
00042     asm("nop");
00043     asm("nop");
00044     asm("nop");
00045     asm("nop");
00046     asm("nop");
00047     asm("nop");
00048     asm("nop");
00049     asm("nop");
00050     asm("nop");
00051     asm("nop");
00052     asm("nop");
00053 
00054 }
00055 
00056 inline void sleep0_7us(void)
00057 {
00058     asm("nop");
00059     asm("nop");
00060     asm("nop");
00061     asm("nop");
00062     asm("nop");
00063     asm("nop");
00064     asm("nop");
00065     asm("nop");
00066     asm("nop");
00067     asm("nop");
00068     asm("nop");
00069     asm("nop");
00070     asm("nop");
00071     asm("nop");
00072     asm("nop");
00073     asm("nop");
00074     asm("nop");
00075     asm("nop");
00076     asm("nop");
00077     asm("nop");
00078     asm("nop");
00079     asm("nop");
00080     asm("nop");
00081     asm("nop");
00082     asm("nop");
00083     asm("nop");
00084     asm("nop");
00085     asm("nop");
00086     asm("nop");
00087     asm("nop");
00088 
00089 }
00090 
00091 inline void sleep0_6us(void)
00092 {
00093     asm("nop");
00094     asm("nop");
00095     asm("nop");
00096     asm("nop");
00097     asm("nop");
00098     asm("nop");
00099     asm("nop");
00100     asm("nop");
00101     asm("nop");
00102     asm("nop");
00103     asm("nop");
00104     asm("nop");
00105     asm("nop");
00106 }
00107 
00108 inline void led_bit_0(void){
00109     pinLed = 1;
00110     sleep0_35us();
00111     pinLed = 0;
00112     sleep0_8us();
00113 }
00114 
00115 inline void led_bit_1(void){
00116     pinLed = 1;
00117     sleep0_7us();
00118     pinLed = 0;
00119     sleep0_6us();
00120 }
00121 
00122 
00123 void TaskLed(void const *argument)
00124 {
00125     int i;
00126     int j;
00127     int k;
00128     int8_t val = 128;
00129     
00130     printf("TaskLed started\r\n");
00131     
00132     while(1){
00133 
00134         
00135         for(i=0;i<NUMBER_OF_LEDS;i++){
00136             for(j=0;j<3;j++){
00137                 for(k=0;k<8;k++){
00138                     if((val >> (7-k)) & 0x01){
00139                         led_bit_1();
00140                     } else {
00141                         led_bit_0();
00142                     }
00143                 }
00144             }
00145         }
00146         val-=20;
00147         Thread::wait(100);
00148     }
00149 }
00150 /*
00151  * WS2812 tape led IC
00152  *
00153  *          0.35us   0.8us    (+-150ns)
00154  *  0:     |^^^^^|__________|
00155  *
00156  *             0.7us   0.6us  (+-150ns)
00157  *  1:     |^^^^^^^^^^|_____|
00158  *
00159  *               >50us
00160  *  RESET: |________________|
00161  */
00162