仪器社区

MSP430频率计的问题,谢谢了

慌痉概率 2012-11-26
这是我的中断函数 #pragma vector=TIMERA1_VECTOR __interrupt void TIMER_a(void) { switch(TAIV) { case 2: if(CCTL1&CM0) //上升沿 { CCTL1=(CCTL1&(~CM0)... 这是我的中断函数 #pragma vector=TIMERA1_VECTOR __interrupt void TIMER_a(void) { switch(TAIV) { case 2: if(CCTL1&CM0) //上升沿 { CCTL1=(CCTL1&(~CM0))|CM1; //更变设置为下降沿触发 start=CCR1; //记录初始时间 t=0; //溢出计数变量复位 } else if (CCTL1&CM1) //下降沿 { CCTL1=(CCTL1&(~CM1))|CM0; //更变设置为上升沿触发 end=CCR1; //用start,end,t计算脉冲宽度 xianshi(t,end,start); } //pCCR1=65535*t+end-start; //for(;;) break; case 4: break; case 10: t=t+1;break; } } 这个是显示函数 void xianshi(t,end,start) { fre=65535*t+end-start; write_cmd(0x88); write_data(num[fre/100000]); write_cmd(0x89); write_data(num[fre%100000/10000]); write_cmd(0x8A); write_data(num[fre%10000/1000]); write_cmd(0x8B); write_data(num[fre%1000/100]); write_cmd(0x8C); write_data(num[fre%100/10]); write_cmd(0x8D); write_data(num[fre%10]); } 现在的问题是不管给多少频率,显示都不变。我不知道问题出在了哪里。。。。希望会的人帮帮忙,谢谢了
评论
全部评论
879844530
大的框架瞅过去,做不了高频的,我知道的有两点,一个是如楼上所说改CCTL,一个是显示的算法,除法是Z费时间的。尤其是用的高频晶振如8M的基本上就没有用了。可以考虑捕获模式。细节的问题就要检查参数类型会不会溢出这些
5 0 2012-11-27 0条评论 回复
您可能感兴趣的社区主题
加载中...
发布 评论