Board logo

标题: 频率捕捉的问题 [打印本页]

作者: 紫龙高飞    时间: 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