私は1 Hzのパルスを生成する32.768 kHzの発振器を持っています。私はこのパルスを40MHzクロックで測定しています。私は、期待される結果と得られた結果を比較することによって、発振器の実際の周波数を測定しようとしています。Cでfloatまたはuint64型を使用しないで発振器周波数を計算する
- 私が測定している期間を変更することはできません.1Hz(1s)でなければなりません。
- float、double、またはuint32より大きい型は使用できません。
- 整数部分の後ろの最初の桁も必要です(32768.1Hzなど)。だから、40008312の測定期間の結果がどのようにこのことができます327611.
なります
computedFreq = (uint32) ((float32)32768u/(((float32)measuredPeriod/(float32)40,000,000)/(float32)10u));
または
computedFreq = (32768*10*40,000,000)/measuredPeriod;
:
制約がなければ解決策は次のようになります制約条件を満たすことで達成できるか?
使用2 UINT32 'measurePeriod'の可能な範囲で何dHez – Garf365
にUINT64と仕事をエミュレートするために? – user694733
@ user694733 40,000,000 +/- 10,000。 –