原创 R8C1B 定时器C的输入捕捉功能

2011-2-25 14:21 1624 3 3 分类: MCU/ 嵌入式
来源:瑞萨单片机论坛

在R8C1B中定时器C的功能强大,有定时器、输入捕捉和输出比较功能,其中
输入捕捉功能可以捕捉到脉冲的周期

定时器C的原理图如下:

【R8C1B学习板项目专用贴第十篇】R8C1B 定时器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条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /3 下一条