arranged by katano

Dependencies:   MPU9150_DMP Neon_F303K8 QuaternionMath iSDIO mbed-rtos mbed

Fork of Neon_F303K8 by Yasuhiro ISHII

Committer:
yakatano
Date:
Fri Aug 05 15:05:20 2016 +0000
Revision:
4:636bb3f66dcd
Parent:
3:5f0d6133d34c
??????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yishii 0:65a0ae5578da 1 #include "mbed.h"
yishii 0:65a0ae5578da 2 #include "math.h"
yishii 0:65a0ae5578da 3 #include "rtos.h"
yishii 0:65a0ae5578da 4 #include "gpio_defs.h"
yishii 0:65a0ae5578da 5 #include "configure.h"
yishii 0:65a0ae5578da 6
yishii 0:65a0ae5578da 7
yishii 0:65a0ae5578da 8 // Clock 72MHz
yishii 0:65a0ae5578da 9 // 0.35us : NOP*25.2
yishii 0:65a0ae5578da 10 // 0.8us : 57.6
yishii 0:65a0ae5578da 11 // 0.7us : 50.4
yishii 0:65a0ae5578da 12 // 0.6us : 43.2
yishii 0:65a0ae5578da 13
yishii 0:65a0ae5578da 14 inline void sleep0_35us(void)
yishii 0:65a0ae5578da 15 {
yishii 0:65a0ae5578da 16 asm("nop");
yishii 0:65a0ae5578da 17 asm("nop");
yishii 0:65a0ae5578da 18 asm("nop");
yishii 0:65a0ae5578da 19 asm("nop");
yishii 0:65a0ae5578da 20 asm("nop");
yishii 0:65a0ae5578da 21 asm("nop");
yishii 0:65a0ae5578da 22 asm("nop");
yishii 1:73543a1fbe62 23
yishii 0:65a0ae5578da 24 }
yishii 0:65a0ae5578da 25 inline void sleep0_8us(void)
yishii 0:65a0ae5578da 26 {
yishii 0:65a0ae5578da 27 asm("nop");
yishii 0:65a0ae5578da 28 asm("nop");
yishii 0:65a0ae5578da 29 asm("nop");
yishii 0:65a0ae5578da 30 asm("nop");
yishii 0:65a0ae5578da 31 asm("nop");
yishii 0:65a0ae5578da 32 asm("nop");
yishii 0:65a0ae5578da 33 asm("nop");
yishii 0:65a0ae5578da 34 asm("nop");
yishii 0:65a0ae5578da 35 asm("nop");
yishii 0:65a0ae5578da 36 asm("nop");
yishii 0:65a0ae5578da 37 asm("nop");
yishii 0:65a0ae5578da 38 asm("nop");
yishii 0:65a0ae5578da 39 asm("nop");
yishii 0:65a0ae5578da 40 asm("nop");
yishii 0:65a0ae5578da 41 asm("nop");
yishii 0:65a0ae5578da 42 asm("nop");
yishii 0:65a0ae5578da 43 asm("nop");
yishii 0:65a0ae5578da 44 asm("nop");
yishii 0:65a0ae5578da 45 asm("nop");
yishii 0:65a0ae5578da 46 asm("nop");
yishii 0:65a0ae5578da 47 asm("nop");
yishii 0:65a0ae5578da 48 asm("nop");
yishii 0:65a0ae5578da 49 asm("nop");
yishii 0:65a0ae5578da 50 asm("nop");
yishii 0:65a0ae5578da 51 asm("nop");
yishii 0:65a0ae5578da 52 asm("nop");
yishii 1:73543a1fbe62 53
yishii 0:65a0ae5578da 54 }
yishii 0:65a0ae5578da 55
yishii 0:65a0ae5578da 56 inline void sleep0_7us(void)
yishii 0:65a0ae5578da 57 {
yishii 0:65a0ae5578da 58 asm("nop");
yishii 0:65a0ae5578da 59 asm("nop");
yishii 0:65a0ae5578da 60 asm("nop");
yishii 0:65a0ae5578da 61 asm("nop");
yishii 0:65a0ae5578da 62 asm("nop");
yishii 0:65a0ae5578da 63 asm("nop");
yishii 0:65a0ae5578da 64 asm("nop");
yishii 0:65a0ae5578da 65 asm("nop");
yishii 0:65a0ae5578da 66 asm("nop");
yishii 0:65a0ae5578da 67 asm("nop");
yishii 0:65a0ae5578da 68 asm("nop");
yishii 0:65a0ae5578da 69 asm("nop");
yishii 0:65a0ae5578da 70 asm("nop");
yishii 0:65a0ae5578da 71 asm("nop");
yishii 0:65a0ae5578da 72 asm("nop");
yishii 0:65a0ae5578da 73 asm("nop");
yishii 0:65a0ae5578da 74 asm("nop");
yishii 0:65a0ae5578da 75 asm("nop");
yishii 0:65a0ae5578da 76 asm("nop");
yishii 0:65a0ae5578da 77 asm("nop");
yishii 0:65a0ae5578da 78 asm("nop");
yishii 0:65a0ae5578da 79 asm("nop");
yishii 0:65a0ae5578da 80 asm("nop");
yishii 0:65a0ae5578da 81 asm("nop");
yishii 0:65a0ae5578da 82 asm("nop");
yishii 0:65a0ae5578da 83 asm("nop");
yishii 0:65a0ae5578da 84 asm("nop");
yishii 0:65a0ae5578da 85 asm("nop");
yishii 0:65a0ae5578da 86 asm("nop");
yishii 0:65a0ae5578da 87 asm("nop");
yishii 1:73543a1fbe62 88
yishii 0:65a0ae5578da 89 }
yishii 0:65a0ae5578da 90
yishii 0:65a0ae5578da 91 inline void sleep0_6us(void)
yishii 0:65a0ae5578da 92 {
yishii 0:65a0ae5578da 93 asm("nop");
yishii 0:65a0ae5578da 94 asm("nop");
yishii 0:65a0ae5578da 95 asm("nop");
yishii 0:65a0ae5578da 96 asm("nop");
yishii 0:65a0ae5578da 97 asm("nop");
yishii 0:65a0ae5578da 98 asm("nop");
yishii 0:65a0ae5578da 99 asm("nop");
yishii 0:65a0ae5578da 100 asm("nop");
yishii 0:65a0ae5578da 101 asm("nop");
yishii 0:65a0ae5578da 102 asm("nop");
yishii 0:65a0ae5578da 103 asm("nop");
yishii 0:65a0ae5578da 104 asm("nop");
yishii 0:65a0ae5578da 105 asm("nop");
yishii 0:65a0ae5578da 106 }
yishii 0:65a0ae5578da 107
yishii 0:65a0ae5578da 108 inline void led_bit_0(void){
yishii 0:65a0ae5578da 109 pinLed = 1;
yishii 0:65a0ae5578da 110 sleep0_35us();
yishii 0:65a0ae5578da 111 pinLed = 0;
yishii 0:65a0ae5578da 112 sleep0_8us();
yishii 0:65a0ae5578da 113 }
yishii 0:65a0ae5578da 114
yishii 0:65a0ae5578da 115 inline void led_bit_1(void){
yishii 0:65a0ae5578da 116 pinLed = 1;
yishii 0:65a0ae5578da 117 sleep0_7us();
yishii 0:65a0ae5578da 118 pinLed = 0;
yishii 0:65a0ae5578da 119 sleep0_6us();
yishii 0:65a0ae5578da 120 }
yishii 0:65a0ae5578da 121
yishii 0:65a0ae5578da 122
yishii 0:65a0ae5578da 123 void TaskLed(void const *argument)
yishii 0:65a0ae5578da 124 {
yishii 0:65a0ae5578da 125 int i;
yishii 0:65a0ae5578da 126 int j;
yishii 0:65a0ae5578da 127 int k;
yakatano 4:636bb3f66dcd 128 int8_t val = 128;
yishii 0:65a0ae5578da 129
yishii 1:73543a1fbe62 130 printf("TaskLed started\r\n");
yishii 1:73543a1fbe62 131
yishii 0:65a0ae5578da 132 while(1){
yishii 1:73543a1fbe62 133
yishii 0:65a0ae5578da 134
yishii 0:65a0ae5578da 135 for(i=0;i<NUMBER_OF_LEDS;i++){
yishii 0:65a0ae5578da 136 for(j=0;j<3;j++){
yishii 0:65a0ae5578da 137 for(k=0;k<8;k++){
yishii 0:65a0ae5578da 138 if((val >> (7-k)) & 0x01){
yishii 0:65a0ae5578da 139 led_bit_1();
yishii 0:65a0ae5578da 140 } else {
yishii 0:65a0ae5578da 141 led_bit_0();
yishii 0:65a0ae5578da 142 }
yishii 0:65a0ae5578da 143 }
yishii 0:65a0ae5578da 144 }
yishii 0:65a0ae5578da 145 }
yishii 0:65a0ae5578da 146 val-=20;
yishii 3:5f0d6133d34c 147 Thread::wait(100);
yishii 0:65a0ae5578da 148 }
yishii 0:65a0ae5578da 149 }
yishii 0:65a0ae5578da 150 /*
yishii 0:65a0ae5578da 151 * WS2812 tape led IC
yishii 0:65a0ae5578da 152 *
yishii 0:65a0ae5578da 153 * 0.35us 0.8us (+-150ns)
yishii 0:65a0ae5578da 154 * 0: |^^^^^|__________|
yishii 0:65a0ae5578da 155 *
yishii 0:65a0ae5578da 156 * 0.7us 0.6us (+-150ns)
yishii 0:65a0ae5578da 157 * 1: |^^^^^^^^^^|_____|
yishii 0:65a0ae5578da 158 *
yishii 0:65a0ae5578da 159 * >50us
yishii 0:65a0ae5578da 160 * RESET: |________________|
yishii 0:65a0ae5578da 161 */
yishii 0:65a0ae5578da 162