嵌入式系统中的时序分析与测量技术
1. 时序测量基础
在嵌入式系统开发中,准确测量代码运行时间至关重要。测量运行时间时,会存在一定的开销,例如测量函数本身的运行时间。通过修改主函数代码,让测量函数之间无代码执行,可测量出一半的开销。如将主函数中“result = (unsigned short) sqrt(i);”行暂时注释或移除,使端口引脚设置后立即复位,以 ATmega128 和 16 MHz 晶体为例,这一过程耗时 125 ns,对应两个处理器周期。测量时减去这 125 ns 可得到更精确的结果。由于函数使用了 inline 前缀,编译器不生成函数调用,仅在代码中放置一条机器指令,从而降低了开销。
2. 无端口引脚的测量方法
当端口引脚或外部测量方法不可用时,可使用硬件定时器进行测量。具体步骤如下:
1. 在测量元素开始时存储定时器值。
2. 测量结束时再次读取定时器值。
3. 计算两个值的差值,该差值反映了以定时器滴答为单位的总运行时间。
4. 根据定时器滴答的持续时间(定时器频率的倒数)将其转换为秒。
以下是基于软件的运行时间测量的代码实现:
- observation.h :
#ifndef OBSERVATION_H_
#define OBSERVATION_H_
#include <avr/io.h>
#include <avr/interrupt.h>
extern unsigned short startTime;
extern unsigned sh
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



