首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

怎么用输入捕获去测量一个连续脉冲周期?

就只有1个定时器中断。输入波形快接近方波__∫ ̄|__,就是上升沿部分略有弧形
迷途的羔羊!
问题找到,检测两个上升沿的程序执行时间太长,导致有的数据比正确值大2倍或3倍。现在要怎么减少程序执行时间,嵌套汇编?该怎么做啊?版主帮帮忙啊!!!
void TIM_Init(void)
{
TIOS_IOS0 = 0;
TFLG1_C0F = 1;
TCTL4_EDG0A = 1;
TCTL4_EDG0B = 0;
TSCR1_TEN = 1;
}
void main(void)
{
TIM_Init();
uint temp,i,data[16],TIC,TICH;
DisableInterrupts;
while(!TFLG1_C0F);
TFLG1_C0F=1;
TICH = TC0;
for(i=0;i<16;i++)
{
while(!TFLG1_C0F);
TFLG1_C0F=1;
TIC=TC0;
if(TICH>TIC)temp=TIC+(65535-TICH+1);
else temp=TIC-TICH;
data=temp;
TICH=TIC;
}
迷途的羔羊!
你没有用中断吗?
海纳百川  有容乃大
没有,中断就更慢了
迷途的羔羊!
会不会跟总线周期有关啊,我用的是12M晶振,总线周期就1/6M,一个指令周期跟总线周期一样,如果要提高程序执行时间,就提高总线频率。
迷途的羔羊!
是呵,你的总线频率是多少,所测信号频率又是多少?
如果用中断是不会更慢的,因为就不需要用软件进行判断了。但中断处理程序应尽量的短,否则也会屏蔽掉多次发生的中断。
海纳百川  有容乃大
现在被我改成12M的总线频率了,总算正常了。测的频率在250K左右。用中断还得考虑参数返回的情况,还是用查询的比较简单。HC12的芯片用PLL倍频有限制到几M没。我想再把总线频率改到24M?
迷途的羔羊!
用PLL可以将总线频率升至24M。
海纳百川  有容乃大
返回列表