teamALI
/
HB2018
ジャイロ追加前
Diff: HbManager.cpp
- 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;