微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 第十帖 R8C1B 定时器C的输入捕捉功能

第十帖 R8C1B 定时器C的输入捕捉功能

时间:10-02 整理:3721RD 点击:
在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;
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top