kazuyoshi makisumi
/
BLDC
ホールセンサの値を見てBLDCモータを回す。
main.cpp@0:3a3b03651663, 2014-07-22 (annotated)
- Committer:
- mxy7
- Date:
- Tue Jul 22 02:24:31 2014 +0000
- Revision:
- 0:3a3b03651663
- Child:
- 1:0165e226b5af
test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mxy7 | 0:3a3b03651663 | 1 | #include "mbed.h" |
mxy7 | 0:3a3b03651663 | 2 | |
mxy7 | 0:3a3b03651663 | 3 | DigitalOut l1(LED1); |
mxy7 | 0:3a3b03651663 | 4 | DigitalOut l2(LED2); |
mxy7 | 0:3a3b03651663 | 5 | DigitalOut l3(LED3); |
mxy7 | 0:3a3b03651663 | 6 | |
mxy7 | 0:3a3b03651663 | 7 | PwmOut uH(p21); |
mxy7 | 0:3a3b03651663 | 8 | PwmOut vH(p22); |
mxy7 | 0:3a3b03651663 | 9 | PwmOut wH(p23); |
mxy7 | 0:3a3b03651663 | 10 | |
mxy7 | 0:3a3b03651663 | 11 | PwmOut uL(p24); |
mxy7 | 0:3a3b03651663 | 12 | PwmOut vL(p25); |
mxy7 | 0:3a3b03651663 | 13 | PwmOut wL(p26); |
mxy7 | 0:3a3b03651663 | 14 | |
mxy7 | 0:3a3b03651663 | 15 | InterruptIn u(p16); |
mxy7 | 0:3a3b03651663 | 16 | InterruptIn v(p17); |
mxy7 | 0:3a3b03651663 | 17 | InterruptIn w(p18); |
mxy7 | 0:3a3b03651663 | 18 | |
mxy7 | 0:3a3b03651663 | 19 | int p; |
mxy7 | 0:3a3b03651663 | 20 | float period = 1; |
mxy7 | 0:3a3b03651663 | 21 | float pulse = period / 10; |
mxy7 | 0:3a3b03651663 | 22 | |
mxy7 | 0:3a3b03651663 | 23 | void mode(int); |
mxy7 | 0:3a3b03651663 | 24 | void out(int,int,int,int,int,int); |
mxy7 | 0:3a3b03651663 | 25 | void A();void B();void C(); |
mxy7 | 0:3a3b03651663 | 26 | void D();void E();void F(); |
mxy7 | 0:3a3b03651663 | 27 | |
mxy7 | 0:3a3b03651663 | 28 | void init(){ |
mxy7 | 0:3a3b03651663 | 29 | u.mode(PullUp); |
mxy7 | 0:3a3b03651663 | 30 | v.mode(PullUp); |
mxy7 | 0:3a3b03651663 | 31 | w.mode(PullUp); |
mxy7 | 0:3a3b03651663 | 32 | |
mxy7 | 0:3a3b03651663 | 33 | uH.period_us(period); |
mxy7 | 0:3a3b03651663 | 34 | vH.period_us(period); |
mxy7 | 0:3a3b03651663 | 35 | wH.period_us(period); |
mxy7 | 0:3a3b03651663 | 36 | uH.pulsewidth_us(pulse); |
mxy7 | 0:3a3b03651663 | 37 | vH.pulsewidth_us(pulse); |
mxy7 | 0:3a3b03651663 | 38 | wH.pulsewidth_us(pulse); |
mxy7 | 0:3a3b03651663 | 39 | |
mxy7 | 0:3a3b03651663 | 40 | uL.period_us(period); |
mxy7 | 0:3a3b03651663 | 41 | vL.period_us(period); |
mxy7 | 0:3a3b03651663 | 42 | wL.period_us(period); |
mxy7 | 0:3a3b03651663 | 43 | uL.pulsewidth_us(pulse); |
mxy7 | 0:3a3b03651663 | 44 | vL.pulsewidth_us(pulse); |
mxy7 | 0:3a3b03651663 | 45 | wL.pulsewidth_us(pulse); |
mxy7 | 0:3a3b03651663 | 46 | |
mxy7 | 0:3a3b03651663 | 47 | p = 0;//start |
mxy7 | 0:3a3b03651663 | 48 | } |
mxy7 | 0:3a3b03651663 | 49 | |
mxy7 | 0:3a3b03651663 | 50 | int main() { |
mxy7 | 0:3a3b03651663 | 51 | init(); |
mxy7 | 0:3a3b03651663 | 52 | while(1) { |
mxy7 | 0:3a3b03651663 | 53 | u.rise(&A); |
mxy7 | 0:3a3b03651663 | 54 | w.fall(&B); |
mxy7 | 0:3a3b03651663 | 55 | v.rise(&C); |
mxy7 | 0:3a3b03651663 | 56 | u.fall(&D); |
mxy7 | 0:3a3b03651663 | 57 | w.rise(&E); |
mxy7 | 0:3a3b03651663 | 58 | v.fall(&F); |
mxy7 | 0:3a3b03651663 | 59 | mode(p); |
mxy7 | 0:3a3b03651663 | 60 | } |
mxy7 | 0:3a3b03651663 | 61 | return 0; |
mxy7 | 0:3a3b03651663 | 62 | } |
mxy7 | 0:3a3b03651663 | 63 | |
mxy7 | 0:3a3b03651663 | 64 | void mode(int p){ |
mxy7 | 0:3a3b03651663 | 65 | switch(p){ |
mxy7 | 0:3a3b03651663 | 66 | case 0: |
mxy7 | 0:3a3b03651663 | 67 | out(1,1,1,0,0,0); |
mxy7 | 0:3a3b03651663 | 68 | break; |
mxy7 | 0:3a3b03651663 | 69 | case 1: |
mxy7 | 0:3a3b03651663 | 70 | out(0,1,1,0,1,0); |
mxy7 | 0:3a3b03651663 | 71 | break; |
mxy7 | 0:3a3b03651663 | 72 | case 2: |
mxy7 | 0:3a3b03651663 | 73 | out(0,1,1,0,0,1); |
mxy7 | 0:3a3b03651663 | 74 | break; |
mxy7 | 0:3a3b03651663 | 75 | case 3: |
mxy7 | 0:3a3b03651663 | 76 | out(1,0,1,0,0,1); |
mxy7 | 0:3a3b03651663 | 77 | break; |
mxy7 | 0:3a3b03651663 | 78 | case 4: |
mxy7 | 0:3a3b03651663 | 79 | out(1,0,1,1,0,0); |
mxy7 | 0:3a3b03651663 | 80 | break; |
mxy7 | 0:3a3b03651663 | 81 | case 5: |
mxy7 | 0:3a3b03651663 | 82 | out(1,1,0,1,0,0); |
mxy7 | 0:3a3b03651663 | 83 | break; |
mxy7 | 0:3a3b03651663 | 84 | case 6: |
mxy7 | 0:3a3b03651663 | 85 | out(1,1,0,0,1,0); |
mxy7 | 0:3a3b03651663 | 86 | break; |
mxy7 | 0:3a3b03651663 | 87 | default: |
mxy7 | 0:3a3b03651663 | 88 | out(1,1,1,0,0,0); |
mxy7 | 0:3a3b03651663 | 89 | break; |
mxy7 | 0:3a3b03651663 | 90 | } |
mxy7 | 0:3a3b03651663 | 91 | } |
mxy7 | 0:3a3b03651663 | 92 | |
mxy7 | 0:3a3b03651663 | 93 | void out(int uh,int vh,int wh,int ul,int vl,int wl){ |
mxy7 | 0:3a3b03651663 | 94 | uL.write(ul); |
mxy7 | 0:3a3b03651663 | 95 | vL.write(vl); |
mxy7 | 0:3a3b03651663 | 96 | wL.write(vl); |
mxy7 | 0:3a3b03651663 | 97 | uH.write(uh); |
mxy7 | 0:3a3b03651663 | 98 | vH.write(vh); |
mxy7 | 0:3a3b03651663 | 99 | wH.write(wh); |
mxy7 | 0:3a3b03651663 | 100 | } |
mxy7 | 0:3a3b03651663 | 101 | |
mxy7 | 0:3a3b03651663 | 102 | void A(){p = 1;} |
mxy7 | 0:3a3b03651663 | 103 | void B(){p = 2;} |
mxy7 | 0:3a3b03651663 | 104 | void C(){p = 3;} |
mxy7 | 0:3a3b03651663 | 105 | void D(){p = 4;} |
mxy7 | 0:3a3b03651663 | 106 | void E(){p = 5;} |
mxy7 | 0:3a3b03651663 | 107 | void F(){p = 6;} |
mxy7 | 0:3a3b03651663 | 108 |