ジャイロ追加前

Dependencies:   mbed FreeRTOS

Revision:
40:debe99e228d3
Parent:
39:1b76f7df8804
Child:
41:45c982b1c5b6
--- a/HbManager.cpp	Sat Jan 19 12:35:23 2019 +0000
+++ b/HbManager.cpp	Mon Jan 21 06:32:24 2019 +0000
@@ -164,6 +164,7 @@
             tmp = subProp[i]->getValue(OFS);
             dif = tmp - (INT16)gf_MtReqOfs[i].val;
             if(dif == 0){
+                subProp[i]->setValue(OFS, (INT16)gf_MtReqOfs[i].val);
                 gf_MtReqOfs[i].req = false;
             }
             else {
@@ -179,7 +180,7 @@
                 else if(100 < dif){
                     tmp-= 10;
                 }
-                else if(100 > dif && 10 < dif){
+                else if(100 >= dif && 10 < dif){
                     tmp-= 5;
                 }
                 else if ( 10 >= dif && 1 <= dif){
@@ -188,10 +189,10 @@
                 else if ( -1000 > dif){
                     tmp+=100;
                 }
-                else if ( -100 > dif){
+                else if ( -100 >= dif){
                     tmp+=10;
                 }
-                else if(-100 < dif && -10 > dif){
+                else if(-100 <= dif && -10 > dif){
                     tmp+= 5;
                 }
                 else if ( -10 <= dif && -1 >= dif){
@@ -213,6 +214,51 @@
     if(gf_Print.bf.m2){ sp.printf("m2=%d,",(INT16)subProp[1]->getValue(ATT)); }
     if(gf_Print.bf.m3){ sp.printf("m3=%d,",(INT16)subProp[2]->getValue(ATT)); }
     if(gf_Print.bf.m4){ sp.printf("m4=%d,",(INT16)subProp[3]->getValue(ATT)); }
+
+    //DEBUG用FPGAに直接指示
+    INT16 pos;
+    INT16 typ;
+    if(gf_State == SLEEP){
+        for(int i = 0; i < 8; ++i){
+            pos = i / 2;
+            typ = i % 2;
+            if(gf_MtReqDct[i].req){
+                tmp = subProp[pos]->getValueFpgaMot((eMotType)typ);
+                dif = tmp - (INT16)gf_MtReqDct[i].val;
+                if(dif == 0){
+                    subProp[pos]->setValueFpgaMot((eMotType)typ, (INT16)gf_MtReqDct[i].val);
+                    gf_MtReqDct[i].req = false;
+                }
+                else {
+                    if(1000 < dif){
+                        tmp-=100;
+                    }
+                    else if(100 < dif){
+                        tmp-= 10;
+                    }
+                    else if(100 >= dif && 10 < dif){
+                        tmp-= 5;
+                    }
+                    else if ( 10 >= dif && 1 <= dif){
+                        tmp-=1;
+                    }
+                    else if ( -1000 > dif){
+                        tmp+=100;
+                    }
+                    else if ( -100 >= dif){
+                        tmp+=10;
+                    }
+                    else if(-100 <= dif && -10 > dif){
+                        tmp+= 5;
+                    }
+                    else if ( -10 <= dif && -1 >= dif){
+                        tmp+=1;
+                    }
+                    subProp[pos]->setValueFpgaMot((eMotType)typ, tmp);
+                }
+            }
+        }
+    }
 }
 
 INT16 HbManager::getCurMotVal(eMotPos pos){
@@ -224,6 +270,11 @@
     subProp[(int)pos]->setValue(USER, val);
 }
 
+void HbManager::setFpgaMot(eMotPos pos,eMotType type, INT16 val){
+    if(subProp[(int)pos] == NULL) return;
+    subProp[(int)pos]->setValueFpgaMot(type, val);
+}
+
 // void HbManager::setMotFPGA(UCHAR num, INT16 val){
 //     //UCHAR tmpN = num / 2;
 //     //UCHAR tmp = num % 2;