我正在做一个嵌入式项目,我必须将超时值写入一些微芯片的两个字节寄存器中。
超时定义为:
timeout = REG_a * (REG_b +1)
我想使用 256 到 60000 范围内的整数对这些寄存器进行编程。我正在寻找一种算法,该算法在给定超时值的情况下计算 REG_a 和 REG_b。
如果不可能找到精确的解决方案,我想获得下一个可能更大的超时值。
到目前为止我做了什么:
我目前的解决方案计算:
temp = integer_square_root (timeout) +1;
REG_a = temp;
REG_b = temp-1;
这导致在实践中运行良好的值。但是,我想看看你们是否可以提出更优化的解决方案。
哦,我的内存有限,所以大表是不可能的。运行时间也很重要,所以我不能简单地暴力破解解决方案。