在R8C1B中定时器C的功能强大,有定时器、输入捕捉和输出比较功能,其中
输入捕捉功能可以捕捉到脉冲的周期
定时器C的原理图如下:
牵涉到的寄存器包括:
TC:定时器寄存器
TM0:捕捉、比较0寄存器
TM1:比较1寄存器【输入捕捉不用】
TCC0:定时器C控制寄存器0
TCC1:定时器C控制寄存器1
TCOUT:定时器C输出控制寄存器【输入捕捉不用】
初始化代码如下:
/************************************************************************
*函数原型: InitTimerC()
*功能 : 输入捕捉
************************************************************************/
void InitTimerC()
{
tcc00=0; // Timer C stop
tcc01=0; //f1
tcc02=0; //f1
tcc03=0; //上升沿
tcc04=0; //上升沿
tcc07=0; //INT3输入
tcc10=1; //INT3数字滤波f1
tcc11=0; //INT3数字滤波f1
tcc12=0; //无重加载
tcc14=0; //输出比较模式下用
tcc15=0; //输出比较模式下用
tcc16=0; //输出比较模式下用
tcc17=0; //输出比较模式下用
tcc13=0; //输入捕捉模式
int3ic=6;//中断级别6
tcc00=1;//开启计时
}
中断程序:
/***********************************************
*输入捕捉中断程序
*n为捕捉到的周期,两个上升沿之间的时间
***********************************************/
#pragma INTERRUPT/B INT3TCIN() vect=26;
void INT3TCIN(void)
{
ir_int3ic = 0;
if(temp!=0)
{
n=tm0-temp;
}
temp=tm0;
}
文章评论(0条评论)
登录后参与讨论