-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature: spirit::Motor::ChangeLevel::Manual で設定可能な最小値を下回ったらエラーを出力する #185
Labels
enhancement
New feature or request
Comments
yutotnh
changed the title
Feature: spirit::Motor::ChangeLevel::Manual で設定する値の最小値を設定して、最小値を下回ったら最小値を設定するようにする
Feature: spirit::Motor::ChangeLevel::Manual で設定可能な最小値を下回ったら最小値を設定するようにする
Mar 11, 2023
以下の実験結果から、最小値は float型は仮数部が23bit(先頭の1bitは省略しているので、実質24bit)で、1.0Fの仮数部は1bit、なので 1 + 23 = 24で計算通りだと思う #include <iostream>
#include <cmath>
using namespace std;
int main()
{
float max_duty_cycle = 1.0F;
for (int i = 0; ; i--) {
float duty_cycle = max_duty_cycle + powf(2.0F, i);
printf("2^%3d = %3.10f, %3.10f\n", i, powf(2.0F, i), duty_cycle);
if (duty_cycle == max_duty_cycle) {
break;
}
}
return 0;
} $ g++ min_duty_cycle.c && ./a.out
2^ 0 = 1.0000000000, 2.0000000000
2^ -1 = 0.5000000000, 1.5000000000
2^ -2 = 0.2500000000, 1.2500000000
2^ -3 = 0.1250000000, 1.1250000000
2^ -4 = 0.0625000000, 1.0625000000
2^ -5 = 0.0312500000, 1.0312500000
2^ -6 = 0.0156250000, 1.0156250000
2^ -7 = 0.0078125000, 1.0078125000
2^ -8 = 0.0039062500, 1.0039062500
2^ -9 = 0.0019531250, 1.0019531250
2^-10 = 0.0009765625, 1.0009765625
2^-11 = 0.0004882812, 1.0004882812
2^-12 = 0.0002441406, 1.0002441406
2^-13 = 0.0001220703, 1.0001220703
2^-14 = 0.0000610352, 1.0000610352
2^-15 = 0.0000305176, 1.0000305176
2^-16 = 0.0000152588, 1.0000152588
2^-17 = 0.0000076294, 1.0000076294
2^-18 = 0.0000038147, 1.0000038147
2^-19 = 0.0000019073, 1.0000019073
2^-20 = 0.0000009537, 1.0000009537
2^-21 = 0.0000004768, 1.0000004768
2^-22 = 0.0000002384, 1.0000002384
2^-23 = 0.0000001192, 1.0000001192
2^-24 = 0.0000000596, 1.0000000000 |
3 tasks
良きにはからうのもどうかと思ったので、エラーを出すようにします |
yutotnh
changed the title
Feature: spirit::Motor::ChangeLevel::Manual で設定可能な最小値を下回ったら最小値を設定するようにする
Feature: spirit::Motor::ChangeLevel::Manual で設定可能な最小値を下回ったらエラーを出力する
Mar 13, 2023
yutotnh
added a commit
that referenced
this issue
Mar 13, 2023
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
なぜ機能が欲しいのか
spirit::Motor::ChangeLevel::Manual
の時に設定する値がデューティー比に対して情報落ちするような値だったら、なんどadjust_duty_cycle
を行ってもデューティー比が変化しなくなるそういった値が設定された場合にデューティー比が変化しなくなることを防止するために、返り値などで駄目であることを知らせる(エラー)
提案の説明
以下の処理を変更する
spirit/source/Motor.cpp
Lines 146 to 165 in 9b64df4
その他
The text was updated successfully, but these errors were encountered: