teamALI / Mbed 2 deprecated RubyHwTest2

Dependencies:   mbed

Committer:
duchung2603
Date:
Mon Aug 20 07:37:12 2018 +0000
Revision:
1:c002cfb55315
Parent:
0:a8339cee32b7
Child:
2:ff609fd0c51a
2version

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 1:c002cfb55315 28 static UCHAR value=0;
duchung2603 0:a8339cee32b7 29
duchung2603 0:a8339cee32b7 30 //================================================================
duchung2603 0:a8339cee32b7 31 //モーター制御モジュール初期化
duchung2603 0:a8339cee32b7 32 //================================================================
duchung2603 0:a8339cee32b7 33 void motorInit(){
duchung2603 0:a8339cee32b7 34 spi.format(16,3) ;//SPIのフォーマット指定(bit長、極性)
duchung2603 0:a8339cee32b7 35 spi.frequency(500000) ;//クロック周波数
duchung2603 0:a8339cee32b7 36 //Low有意なのでHighにしておく
duchung2603 0:a8339cee32b7 37 CS_n =1;
duchung2603 0:a8339cee32b7 38 }
duchung2603 0:a8339cee32b7 39 //----------------------------------------------------------------
duchung2603 0:a8339cee32b7 40 //SPI送信
duchung2603 0:a8339cee32b7 41 //----------------------------------------------------------------
duchung2603 0:a8339cee32b7 42 void motorSpiSend
duchung2603 0:a8339cee32b7 43 (UCHAR ch //チャンネル番号
duchung2603 0:a8339cee32b7 44 ,UCHAR val //モータ設定値0~255
duchung2603 0:a8339cee32b7 45 )
duchung2603 0:a8339cee32b7 46 {
duchung2603 0:a8339cee32b7 47 SPI_CMD cmd;
duchung2603 0:a8339cee32b7 48 //引数を送信するコマンドに成形
duchung2603 0:a8339cee32b7 49 cmd.bf.key = 0xA; //キーbit :常に0xA
duchung2603 0:a8339cee32b7 50 cmd.bf.ch = ch; //チャンネル番号 :1~12が有効
duchung2603 0:a8339cee32b7 51 cmd.bf.val = val; //モータースロットル :0~255
duchung2603 0:a8339cee32b7 52 //チップセレクトアサート
duchung2603 0:a8339cee32b7 53 CS_n= 0;
duchung2603 0:a8339cee32b7 54 //データ出力
duchung2603 0:a8339cee32b7 55 spi.write(cmd.spiCmd);
duchung2603 0:a8339cee32b7 56 //チップセレクトネゲート
duchung2603 0:a8339cee32b7 57 CS_n = 1;
duchung2603 0:a8339cee32b7 58
duchung2603 0:a8339cee32b7 59 pc.printf("ch[%d] %d\r\n" , cmd.bf.ch , cmd.bf.val);
duchung2603 0:a8339cee32b7 60 }
duchung2603 0:a8339cee32b7 61 //================================================================
duchung2603 0:a8339cee32b7 62 //
duchung2603 0:a8339cee32b7 63 //================================================================
duchung2603 1:c002cfb55315 64
duchung2603 1:c002cfb55315 65 void motorUp(){
duchung2603 1:c002cfb55315 66 int ch ,i , v;
duchung2603 1:c002cfb55315 67
duchung2603 1:c002cfb55315 68 for (i=0; i<10; i++){
duchung2603 1:c002cfb55315 69 if value != 0xFF {
duchung2603 1:c002cfb55315 70 value++;
duchung2603 1:c002cfb55315 71 }
duchung2603 0:a8339cee32b7 72 for(ch=1; ch<3; ch++){
duchung2603 1:c002cfb55315 73 motorSpiSend(ch,value);
duchung2603 1:c002cfb55315 74 wait(0.01);
duchung2603 0:a8339cee32b7 75 }
duchung2603 1:c002cfb55315 76 }
duchung2603 0:a8339cee32b7 77 /*
duchung2603 0:a8339cee32b7 78 for(ch=5; ch<9; ch++){
duchung2603 0:a8339cee32b7 79 for(val=0; val<250; val +=5){
duchung2603 0:a8339cee32b7 80 motorSpiSend(ch,val);
duchung2603 0:a8339cee32b7 81 wait(0.01);
duchung2603 0:a8339cee32b7 82 }
duchung2603 0:a8339cee32b7 83 }
duchung2603 0:a8339cee32b7 84 */
duchung2603 0:a8339cee32b7 85 }
duchung2603 0:a8339cee32b7 86
duchung2603 0:a8339cee32b7 87 void motorStop(int val){
duchung2603 0:a8339cee32b7 88 int ch, v;
duchung2603 0:a8339cee32b7 89 /*
duchung2603 0:a8339cee32b7 90 for(ch=5; ch<9; ch++){
duchung2603 0:a8339cee32b7 91 motorSpiSend(ch,0);
duchung2603 0:a8339cee32b7 92 wait(0.01);
duchung2603 0:a8339cee32b7 93 }
duchung2603 0:a8339cee32b7 94 }
duchung2603 0:a8339cee32b7 95 */
duchung2603 0:a8339cee32b7 96 for(ch=1; ch<3; ch++){
duchung2603 0:a8339cee32b7 97 for (v=val; v>0; v--){
duchung2603 0:a8339cee32b7 98 motorSpiSend(ch,v);
duchung2603 0:a8339cee32b7 99 wait(0.01);
duchung2603 0:a8339cee32b7 100 }
duchung2603 0:a8339cee32b7 101 }
duchung2603 0:a8339cee32b7 102 }
duchung2603 0:a8339cee32b7 103
duchung2603 0:a8339cee32b7 104