Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: fpga.cpp
- Revision:
- 18:5aa48aec9cae
- Parent:
- 17:f9610f3cfa1b
- Child:
- 20:0394e15412c3
--- a/fpga.cpp	Fri Nov 30 05:24:27 2018 +0000
+++ b/fpga.cpp	Sat Dec 01 14:03:08 2018 +0000
@@ -1,5 +1,6 @@
 #include "mbed.h"
 #include "fpga.h"
+#include "globalFlags.h"
 
 #define CLK_CYC 20.83   //FPGAのクロック周期
 
@@ -106,38 +107,73 @@
 //================================================================
 //サブプロペラ設定    位置  0:前左 1:前右 2:後左 3:後右
 //================================================================
-bool fpgaSubProp(UCHAR iPos,UINT16 iSlotl){
-    UCHAR reg_adr[1];
+bool fpgaSubProp(UCHAR iPos,INT16 iVal){
+    UCHAR   regAdr[1];
+    UINT16  regVal;
 
     switch (iPos){
         case 0x0://
-            reg_adr[0] = ADR_SUB_FL_I;
-            reg_adr[1] = ADR_SUB_FL_O;
+            regAdr[0] = ADR_SUB_FL_I;
+            regAdr[1] = ADR_SUB_FL_O;
             break;
         case 0x1://
-            reg_adr[0] = ADR_SUB_FR_I;
-            reg_adr[1] = ADR_SUB_FR_O;
+            regAdr[0] = ADR_SUB_FR_I;
+            regAdr[1] = ADR_SUB_FR_O;
             break;
         case 0x2://
-            reg_adr[0] = ADR_SUB_BL_I;
-            reg_adr[1] = ADR_SUB_BL_O;
+            regAdr[0] = ADR_SUB_BL_I;
+            regAdr[1] = ADR_SUB_BL_O;
             break;
         case 0x3://
-            reg_adr[0] = ADR_SUB_BR_I;
-            reg_adr[1] = ADR_SUB_BR_O;
+            regAdr[0] = ADR_SUB_BR_I;
+            regAdr[1] = ADR_SUB_BR_O;
             break;
         default:
             return false;//何もしないで終わる
     }
-
-    xSpi(reg_adr[0] , iSlotl);//吸気側
-    xSpi(reg_adr[1] , iSlotl);//排気側
+    
+    //レジスタ設定範囲内にリミット
+    if(iVal<0){
+        regVal = 0;
+    }else if(iVal>4095){
+        regVal = 4095;
+    }else{ 
+        regVal = iVal;
+    }
+    
+    xSpi(regAdr[0] , regVal);//吸気側
+    xSpi(regAdr[1] , regVal);//排気側
     
     //正常終了
     return true;
 }
 
 //================================================================
+//モーター個別
+//================================================================
+void fpgaMotorChk(){    
+    UCHAR   id;
+    UINT16  val;
+    
+    sp.printf("Motor check start!!\r\n");
+
+    for(id=0; id<8; id++){
+        sp.printf("Motor[%d] check!!\r\n",id);
+        for(val=0; val<500; val=val+4){
+            xSpi(ADR_SUB_FL_I + id , val);//
+            wait(0.01);
+        }
+        for(val=500; val>10; val=val-4){
+            xSpi(ADR_SUB_FL_I + id , val);//
+            wait(0.01);
+        }
+            xSpi(ADR_SUB_FL_I + id , 0);
+    }
+    gf_Chk.bf.mot = false;    
+    
+}
+
+//================================================================
 //ユーザースイッチ読み取り
 //================================================================
 UINT16 fpgaGetUserSw(){