微控制器功能的时间测量
Time measurements for function in microcontroller
我在一个项目中使用了两个微控制器,我想在两个微控制器的内部定时器的帮助下测量一些代码的执行时间。但是一个微控制器的定时器计数到 32 位值,第二个微控制器的定时器可以计数到 16 位值然后它重新启动。我知道代码的执行时间超过 16 位值。你能建议我解决这个问题吗? (打开和关闭 GPIO 引脚不提供有用的结果)
假设执行时间少于几天或几小时,您应该能够使用任一类型的计时器测量执行时间。真正的问题是如何配置定时器以满足您的需要。您如何配置计时器将控制测量的精度或粒度,以及可以测量的最大间隔。
一般的做法是:
- 确定所需的精度并估计要测量的最长间隔
- 给定精度,确定满足精度要求的定时器时钟预分频器或分频器。例如,如果时钟速度为 50 MHz,并且您需要微秒精度,那么 select 预分频器使得 (Prescaler) / (Clock speed) ~ 1 微秒。电子表格有助于此。对于这种情况,分频值 64 为我们提供了每个定时器增量大约 1.28 微秒。
- 确定您的定时器寄存器是否足够大。对于 16 位定时器,您可以测量 (1.28 微秒) * (2^16 - 1) = 0.084 秒,或大约十分之一秒。如果您测量的东西花费的时间比这更长,您将需要重新考虑您的精度要求。
您现在应该已经确定了配置计时器的关键参数,并牢记限制。如果您用更具体的内容更新您的答案,例如您计划使用的微控制器以及您要测量的内容,我可以更具体。
我在一个项目中使用了两个微控制器,我想在两个微控制器的内部定时器的帮助下测量一些代码的执行时间。但是一个微控制器的定时器计数到 32 位值,第二个微控制器的定时器可以计数到 16 位值然后它重新启动。我知道代码的执行时间超过 16 位值。你能建议我解决这个问题吗? (打开和关闭 GPIO 引脚不提供有用的结果)
假设执行时间少于几天或几小时,您应该能够使用任一类型的计时器测量执行时间。真正的问题是如何配置定时器以满足您的需要。您如何配置计时器将控制测量的精度或粒度,以及可以测量的最大间隔。
一般的做法是:
- 确定所需的精度并估计要测量的最长间隔
- 给定精度,确定满足精度要求的定时器时钟预分频器或分频器。例如,如果时钟速度为 50 MHz,并且您需要微秒精度,那么 select 预分频器使得 (Prescaler) / (Clock speed) ~ 1 微秒。电子表格有助于此。对于这种情况,分频值 64 为我们提供了每个定时器增量大约 1.28 微秒。
- 确定您的定时器寄存器是否足够大。对于 16 位定时器,您可以测量 (1.28 微秒) * (2^16 - 1) = 0.084 秒,或大约十分之一秒。如果您测量的东西花费的时间比这更长,您将需要重新考虑您的精度要求。
您现在应该已经确定了配置计时器的关键参数,并牢记限制。如果您用更具体的内容更新您的答案,例如您计划使用的微控制器以及您要测量的内容,我可以更具体。