これは私の問題です。私はTM4C123での私の待機のためにmsと私たちの間にいくつのクロックサイクルがあるかを計算する必要があります。しかし、私の倍率で値がゼロとして出てきて、他の値が間違っています。どんな助けでも大歓迎です。私が手二重の数字をCに格納していません(数字が小さすぎます)
#include <stdio.h>
int main()
{
float ms_cycled;
float us_cycled;
int ms_cycle;
int us_cycle;
unsigned long MHz = 50;
double TPC = 1/(MHz*10000000); //calculate time per clock cycle
//calculate cycles for ms
ms_cycled = 0.001/TPC;
ms_cycle = ms_cycled;
//calculate cycles for us
us_cycled = 0.000001/TPC;
us_cycle = us_cycled;
printf("TPC = %.16f \n", TPC);
printf("ms_cycled = %f \n", ms_cycled);
printf("us_cycled = %f \n", us_cycled);
printf("ms_cycle = %i \n", ms_cycle);
printf("us_cycle = %i \n", us_cycle);
return 0;
}
出力は以下のとおりです。あなたが整数算術演算を使用している
TPC = 0.0000000000000000
ms_cycled = inf
us_cycled = inf
ms_cycle = -2147483648
us_cycle = -2147483648
これは私が今まで見たことのあるms当たりのクロックを計算するのに最も非効率的な方法です。もしあなたが 'MHz'を持っていれば、毎秒のクロックがあります。そして、1ミリ秒あたりのクロックは、その1/1000の単純な要因です。同様のことがμsあたりのクロックにも当てはまりますが、これもやはり1/1000の係数です。 'ms_cycle = MHZ * 1000; us_cycle = MHzである。 TPCの値は、10^6の代わりに10^7でMHzを掛け合わせることで、係数10でオフになります。 – Gerhardh