Board logo

标题: [请教]输入捕获的问题 [打印本页]

作者: yl84304070    时间: 2006-4-16 11:04     标题: [请教]输入捕获的问题

请问各位大侠


输入捕获的时候,如果寄存器溢出了,是会从0开始重计,还是怎样


有没有什么标志位被置位的


作者: nishui_2000    时间: 2006-4-16 11:12

你可以设置的,一种是当TCNT计数超过65536时会重新计数,另一种是当输出比较满足时,也可一使TCNT重新计数
作者: yl84304070    时间: 2006-4-16 15:14

我没有用输出比较呀
是用TC0输入捕获的
作者: tdjxiao    时间: 2006-4-16 16:55

哪位用过MCCNT来作输入捕获的,这个东西好用吗?
作者: ctypyb2002    时间: 2006-4-16 20:37

外加一句,能否捕获脉冲???
作者: seuafu2005    时间: 2006-4-17 10:49

可以用定时器来捕获脉冲,但是脉冲频率和定时器的时钟要配合好,尽量不要有溢出的时候捕获的情况出现
作者: ctypyb2002    时间: 2006-4-17 16:33

用霍尔元件产生脉冲,怎样捕获脉冲!!???
拜谢!!
作者: zhwdy81    时间: 2006-4-20 10:17

直接用输入捕捉就行了,把分频系数搞大点就可以捕捉频率很低的脉冲了,还避免了计数器翻转的情况。
如果是频率太低的话,那就只能开定时中断,判断溢出次数了
作者: yl84304070    时间: 2006-4-21 16:08

哪位大侠有输入捕获的实例程序呀
作者: zhwdy81    时间: 2006-4-26 13:35

typedef union {
byte Byte;
struct {
byte BIT0 :1;
byte BIT1 :1;
byte BIT2 :1;
byte BIT3 :1;
byte BIT4 :1;
byte BIT5 :1;
byte BIT6 :1;
byte BIT7 :1;
}Bit;
}COUN;
COUN _pulse_flag;
#define zsflag _pulse_flag.Bit.BIT0
#define csflag _pulse_flag.Bit.BIT1
unsigned int cs[6]; //
unsigned int zs[11]; //

void Init_Tim(void)
{
T1SC = 0X00;
T1SC1 = 0X48;
T2SC = 0X44;
T2SC1 = 0X48;
}
//****************************8
void interrupt TIM2_INTSVR(void)
{
T2SC_TOF=0; //清溢出标志
if(cscount!=6) //采集到6个信号?
{
if(csflag==1) //1s内有信号?
{
CAN_data2.Byte=0; //没信号,0
cscount=0; //重新开始采集
}
}
csflag=1; //标志1s内有信号?
if(zscount!=11) //采集到6个信号
{
if(zsflag==1) //1s内有信号?
{
CAN_data4.Byte=0; //无信号,0
CAN_data5.Byte=0;
zscount=0; //重新采集
}
}
zsflag=1; //标志1s内有信号?
}
//***********************(T2CH1)中断服务函数***********************************
void interrupt Capture_cs(void)
{
unsigned char csh,csl;
T2SC1_CH1F=0; //清中断标志
csh=T2CH1H;
csl=T2CH1L;
csflag=0; //清1s内有无信号标志
if(cscount!=6) //采集到6个信号?
{
cs[cscount]=csh*0x100+csl; //未到,采集信号
cscount++;
}
else T2SC1=0X00;
}
//***********************(T1CH1)中断服务函数***********************************
void interrupt Capture_zs(void)
{
unsigned char zsh,zsl;
T1SC1_CH1F=0; //清中断标志
zsh=T1CH1H;
zsl=T1CH1L;
zsflag=0; //清1s内有无信号标志
zs[zscount]=zsh*0x100+zsl; //未到6个信号,采集信号
zscount++;
if(zscount==11) T1SC1=0x00;
}
小弟写的 仅供参考
作者: yl84304070    时间: 2006-4-27 09:48

多谢大哥




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0