|
在学习AVR过程中遇到了这个问题,我想利用定时器中断1的输入捕获功能来获得输入PWM的频率和占空比,查阅了一些资料,知道要先在上升沿触发,然后再下降沿触发,得到高电平的时间。
于是想在中断函数里面重新初始化输入捕获,改在下降沿触发。想利用LED灯的闪烁来看在上升沿和下降沿触发的情况。但是始终不行,部分代码如下,请大神赐教。
void ICEInit(void) //T/C1初始化
{
TIMSK=0X20; //使能捕获中断
TCCR1A=0X00;//T/C1时钟与系统相同,本文使用系统AVR内部自带8MHz振荡源.T/C1时钟周期为1μs
TCCR1B=0XC2; //使能噪音抑制,下降沿触发中断,fosc/8
}
#pragma interrupt_handler CAPT_ISR:6
void CAPT_ISR(void)
{
uchar a;
uint temp;
newFall = ICR1; //read ICR1
Set_Bit(PORTD,1);
CLI();
TIMSK=0X20;
TCCR1A=0X00;
TCCR1B = 0x82;
SEI();
....
....
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|