teamALI / Mbed 2 deprecated RubyHwTest2

Dependencies:   mbed

Committer:
duchung2603
Date:
Mon Aug 20 06:58:42 2018 +0000
Revision:
0:a8339cee32b7
Child:
1:c002cfb55315
MotorTestFullPower

Who changed what in which revision?

UserRevisionLine numberNew contents of line
duchung2603 0:a8339cee32b7 1 #include "mbed.h"
duchung2603 0:a8339cee32b7 2 #include "motor.h"
duchung2603 0:a8339cee32b7 3
duchung2603 0:a8339cee32b7 4
duchung2603 0:a8339cee32b7 5 // ################################################################
duchung2603 0:a8339cee32b7 6 // SPI通信フォーマットに合わせた供用体定義
duchung2603 0:a8339cee32b7 7 // bit |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
duchung2603 0:a8339cee32b7 8 // function | KeyBit | ChNumber | Motor Thlotle |
duchung2603 0:a8339cee32b7 9 // ################################################################
duchung2603 0:a8339cee32b7 10 typedef union{
duchung2603 0:a8339cee32b7 11 UINT16 spiCmd;
duchung2603 0:a8339cee32b7 12 struct{
duchung2603 0:a8339cee32b7 13 UINT16 val : 8;//bit[ 7: 0]
duchung2603 0:a8339cee32b7 14 UINT16 ch : 4;//bit[11: 8]
duchung2603 0:a8339cee32b7 15 UINT16 key : 4;//bit[15:12]
duchung2603 0:a8339cee32b7 16 }bf;
duchung2603 0:a8339cee32b7 17 }SPI_CMD;
duchung2603 0:a8339cee32b7 18
duchung2603 0:a8339cee32b7 19
duchung2603 0:a8339cee32b7 20 // ###############################################################
duchung2603 0:a8339cee32b7 21 // グローバル変数
duchung2603 0:a8339cee32b7 22 // ###############################################################
duchung2603 0:a8339cee32b7 23 static SPI spi (p5,p6,p7); // mosi, miso, clk
duchung2603 0:a8339cee32b7 24 static DigitalOut CS_n(p8); //SPIのチップセレクト
duchung2603 0:a8339cee32b7 25 static Serial pc (USBTX , USBRX );
duchung2603 0:a8339cee32b7 26
duchung2603 0:a8339cee32b7 27 MOTOR_THROTTLE mt={0,};
duchung2603 0:a8339cee32b7 28
duchung2603 0:a8339cee32b7 29 //================================================================
duchung2603 0:a8339cee32b7 30 //モーター制御モジュール初期化
duchung2603 0:a8339cee32b7 31 //================================================================
duchung2603 0:a8339cee32b7 32 void motorInit(){
duchung2603 0:a8339cee32b7 33 spi.format(16,3) ;//SPIのフォーマット指定(bit長、極性)
duchung2603 0:a8339cee32b7 34 spi.frequency(500000) ;//クロック周波数
duchung2603 0:a8339cee32b7 35 //Low有意なのでHighにしておく
duchung2603 0:a8339cee32b7 36 CS_n =1;
duchung2603 0:a8339cee32b7 37 }
duchung2603 0:a8339cee32b7 38 //----------------------------------------------------------------
duchung2603 0:a8339cee32b7 39 //SPI送信
duchung2603 0:a8339cee32b7 40 //----------------------------------------------------------------
duchung2603 0:a8339cee32b7 41 void motorSpiSend
duchung2603 0:a8339cee32b7 42 (UCHAR ch //チャンネル番号
duchung2603 0:a8339cee32b7 43 ,UCHAR val //モータ設定値0~255
duchung2603 0:a8339cee32b7 44 )
duchung2603 0:a8339cee32b7 45 {
duchung2603 0:a8339cee32b7 46 SPI_CMD cmd;
duchung2603 0:a8339cee32b7 47 //引数を送信するコマンドに成形
duchung2603 0:a8339cee32b7 48 cmd.bf.key = 0xA; //キーbit :常に0xA
duchung2603 0:a8339cee32b7 49 cmd.bf.ch = ch; //チャンネル番号 :1~12が有効
duchung2603 0:a8339cee32b7 50 cmd.bf.val = val; //モータースロットル :0~255
duchung2603 0:a8339cee32b7 51 //チップセレクトアサート
duchung2603 0:a8339cee32b7 52 CS_n= 0;
duchung2603 0:a8339cee32b7 53 //データ出力
duchung2603 0:a8339cee32b7 54 spi.write(cmd.spiCmd);
duchung2603 0:a8339cee32b7 55 //チップセレクトネゲート
duchung2603 0:a8339cee32b7 56 CS_n = 1;
duchung2603 0:a8339cee32b7 57
duchung2603 0:a8339cee32b7 58 pc.printf("ch[%d] %d\r\n" , cmd.bf.ch , cmd.bf.val);
duchung2603 0:a8339cee32b7 59 }
duchung2603 0:a8339cee32b7 60 //================================================================
duchung2603 0:a8339cee32b7 61 //
duchung2603 0:a8339cee32b7 62 //================================================================
duchung2603 0:a8339cee32b7 63
duchung2603 0:a8339cee32b7 64 void motorUp(int val){
duchung2603 0:a8339cee32b7 65 int ch, v;
duchung2603 0:a8339cee32b7 66 for(ch=1; ch<3; ch++){
duchung2603 0:a8339cee32b7 67 for (v=val-10; v<val; v++){
duchung2603 0:a8339cee32b7 68 motorSpiSend(ch,v);
duchung2603 0:a8339cee32b7 69 wait(0.01);
duchung2603 0:a8339cee32b7 70 }
duchung2603 0:a8339cee32b7 71 }
duchung2603 0:a8339cee32b7 72 /*
duchung2603 0:a8339cee32b7 73 for(ch=5; ch<9; ch++){
duchung2603 0:a8339cee32b7 74 for(val=0; val<250; val +=5){
duchung2603 0:a8339cee32b7 75 motorSpiSend(ch,val);
duchung2603 0:a8339cee32b7 76 wait(0.01);
duchung2603 0:a8339cee32b7 77 }
duchung2603 0:a8339cee32b7 78 }
duchung2603 0:a8339cee32b7 79 */
duchung2603 0:a8339cee32b7 80 }
duchung2603 0:a8339cee32b7 81
duchung2603 0:a8339cee32b7 82 void motorStop(int val){
duchung2603 0:a8339cee32b7 83 int ch, v;
duchung2603 0:a8339cee32b7 84 /*
duchung2603 0:a8339cee32b7 85 for(ch=5; ch<9; ch++){
duchung2603 0:a8339cee32b7 86 motorSpiSend(ch,0);
duchung2603 0:a8339cee32b7 87 wait(0.01);
duchung2603 0:a8339cee32b7 88 }
duchung2603 0:a8339cee32b7 89 }
duchung2603 0:a8339cee32b7 90 */
duchung2603 0:a8339cee32b7 91 for(ch=1; ch<3; ch++){
duchung2603 0:a8339cee32b7 92 for (v=val; v>0; v--){
duchung2603 0:a8339cee32b7 93 motorSpiSend(ch,v);
duchung2603 0:a8339cee32b7 94 wait(0.01);
duchung2603 0:a8339cee32b7 95 }
duchung2603 0:a8339cee32b7 96 }
duchung2603 0:a8339cee32b7 97 }
duchung2603 0:a8339cee32b7 98
duchung2603 0:a8339cee32b7 99