看了好多关于测速的的帖子,也对ECT模块看来不少资料,脉冲累加器xs128只有一个是不能用了,只好用输入捕捉了。下面是“手把手”的一段代码:通道0输入捕捉
------------------------------------------------------------------------------------------------------------------------------------------------------------
//--------------------通道0输入捕捉初始化-------------------// void ECT0_Init(void) { TSCR2=0x06; //禁止溢出中断,分频系数64(24/64MHz) TIOS_IOS0=0; //通道0为输入捕捉 TCTL4=0x01; //捕捉上升沿 TIE_C0I=1; //通道0输入捕捉中断允许 TSCR1=0x80; //使能定时器 } //----------------------------------------------------------------// #pragma CODE_SEG NON_BANKED //定时器通道0输入捕捉中断 void interrupt 8 Timer0_Onput(void) { TFLG1_C0F=1; //清中断标志位 Input_Num++; PORTB=Input_Num; if(Input_Num>=255) { Input_Num=0; } } -------------------------------------------------------------------------------------------------------------------------------------------------------------
问题就是我们不要它每次检测到脉冲就进中断+1;而是要累积的值。
我把输入捕捉的这个中断关了,在定时中断了每次读取TC0,然后对它复位,也就是赋值零。那么只要读取的频率快于它每次溢出的频率的话是不是就可以。
不知道有那个兄弟是这样干的,能行不,还望哥几个不吝赐教。
|