标题:
频率捕捉的问题
[打印本页]
作者:
紫龙高飞
时间:
2007-4-3 15:39
标题:
频率捕捉的问题
uint read_flash1,ad_cos,tc;
T2SC1=0x44; //上升沿触发
interrupt 8 void time2_isr(void){
unsigned int ad_dianliu,ad_t;
T2SC1_CH1IE=0;
ad_t=T2CH1;
ad_dianliu=read_flash1;
if(ad_t>ad_dianliu) //T2CH1大于上次记录数时
read_flash1=ad_t-ad_dianliu; //T2CH1-上次数值得到本次记录数
else
read_flash1=0xffff-ad_dianliu+ad_t; //T2CH1小于上次记录值时,说明T2CH1溢出重新计数
ad_cos=(read_flash1+tc)/2; //两次采样值平均
tc=ad_cos;
T2SC1_CH1F=0;
T2SC1_CH1IE=1;
}
我这个程序哪里错了,捕捉的数值AD_COS乱跳..我用的是HC908JL8的,采用内部时钟2M.捕捉的实际频率120HZ左右.
[此贴子已经被作者于2007-4-3 15:39:11编辑过]
作者:
strongchen
时间:
2007-4-4 09:40
1. 在中断中不必进行T2SC1_CH1IE=0和T2SC1_CH1IE=1的操作,所有中断已自动屏蔽。你这样反而会引起误触发或屏蔽了正常的中断;
2. 清CHI1F的操作应该先读TCS1然后紧接着写0给CH1F位。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0