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
diff -r f9610f3cfa1b -r 5aa48aec9cae fpga.cpp
--- 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(){