|
这是我的程序,八分频,想要采集周期是16ms脉宽是1.94ms左右的高电平时间,我采集到的数据从1.82到2.07一直在这个范围里,
误差应该没有这么大啊,不知道到底怎么搞的,求大神帮助
void port_init(void)
{
PORTD = 0xFF;
DDRD = 0xBF;
}
void ICEInit(void)
{
port_init;
TCCR1A=0X00;//时钟与系统相同
TCCR1B=0XC2;//使能噪声抑制,上升降沿触发,八分频,周期为1us
TIMSK=0X20;//使能捕获中断
}
#pragma interrupt_handler CAPT_ISP:0x0A
void CAPT_ISP(void)
{
unsigned char sreg;
if(TCCR1B&(1<<ICES1))//假如是上升沿中断
{
TCNT1=0;//TCNT1清零
TCCR1B^=(1<<ICES1);//设置为下降沿中断
}
else //假如是下降沿中断
{
sreg = SREG;
_CLI();
up = TCNT1;
up |= ((unsigned int)TCNT1H<<8);
down = (up/10);
SREG = sreg;
TCCR1B|=(1<<ICES1);
}
TIFR&=(1<<ICF1);//清除中断标志位
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|