您现在的位置: 主页 > MCU > 单片机技术应用 > AVR定时器中断溢出 -
本文所属标签:
为本文创立个标签吧:

AVR定时器中断溢出 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-06 

[导读]最近开始学习飞控的PWM信号输入,发现以前的认知不太正确。一年前做的蓝牙信号接收器,直接给了4个PWM信号的输出。而PWM的频率是arduino默认的频率。但是最近才发现,遥控器的PWM信号常用的是50Hz,也就是信号间隔20

最近开始学习飞控的PWM信号输入,发现以前的认知不太正确。一年前做的蓝牙信号接收器,直接给了4个PWM信号的输出。而PWM的频率是arduino默认的频率。但是最近才发现,遥控器的PWM信号常用的是50Hz,也就是信号间隔20ms。

本文引用地址: http://www.21ic.com/app/mcu/201808/778578.htm

因此打算自己弄个定时器来生成中断,然后设置管脚的高低电平来模拟PWM。

以前用的是MEGA328P,现在打算改用TINY24了。

这是个16位的定时器,时钟频率是8M:

void timer1_init(void)
{
TCCR1A = 0;
TCCR1B = 0;

// 这里设置256分频

TCCR1B |= (_BV(CS12));

// 其他控制寄存器都设置为空
TCCR1C = 0;

//这里设置了一个1.5ms的延时

//值 = 等待的时长(us) * 时钟频率(MHz)/分频

// 46 = 1500 * 8 / 256
TCNT1 = 65536 - 46;

// 开启溢出中断
TIMSK1 = 1;
}

中断响应函数

ISR(TIMER1_OVF_vect)

{

// 这里重置触发计数器

TCNT1 = 65536 - 46;
}

看起来还是很简单。在设置寄存器的时候,要把未用的位先置0。




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > AVR定时器中断溢出 -
 

"AVR定时器中断溢出 -"的相关文章

网站地图

围观()