センサー動作確認版
Dependencies: MPU9150_DMP QuaternionMath iSDIO mbed-rtos mbed
taskLed.cpp@1:73543a1fbe62, 2016-05-16 (annotated)
- Committer:
- yishii
- Date:
- Mon May 16 15:21:20 2016 +0000
- Revision:
- 1:73543a1fbe62
- Parent:
- 0:65a0ae5578da
- Child:
- 3:5f0d6133d34c
????????????????
Who changed what in which revision?
User | Revision | Line number | New 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; |
yishii | 0:65a0ae5578da | 128 | int8_t val = 255; |
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 | 0:65a0ae5578da | 147 | } |
yishii | 0:65a0ae5578da | 148 | } |
yishii | 0:65a0ae5578da | 149 | /* |
yishii | 0:65a0ae5578da | 150 | * WS2812 tape led IC |
yishii | 0:65a0ae5578da | 151 | * |
yishii | 0:65a0ae5578da | 152 | * 0.35us 0.8us (+-150ns) |
yishii | 0:65a0ae5578da | 153 | * 0: |^^^^^|__________| |
yishii | 0:65a0ae5578da | 154 | * |
yishii | 0:65a0ae5578da | 155 | * 0.7us 0.6us (+-150ns) |
yishii | 0:65a0ae5578da | 156 | * 1: |^^^^^^^^^^|_____| |
yishii | 0:65a0ae5578da | 157 | * |
yishii | 0:65a0ae5578da | 158 | * >50us |
yishii | 0:65a0ae5578da | 159 | * RESET: |________________| |
yishii | 0:65a0ae5578da | 160 | */ |
yishii | 0:65a0ae5578da | 161 |