小弟初学AVR单片机,做实验时发现ATmega16IO口引脚直接连到舵机信号线上走得很慢,几乎不能驱动,想请教各位大神帮忙看看是我的程序控制PWM波输出出错了,还是ATmega16IO口引脚本身就驱动不了舵机 。程序我用的是定时器0溢出中断 每10Us一次
下面是定时器程序
/***************************Timer0初始化***********************/
void Timer0Init(void)
{
TCCR0 = 0x00;//停止定时器
TCNT0 = 0xF6;//初始值10us
TIMSK |= (1<<TOIE0);//使能溢出中断
TCCR0 = 0x01;//启动定时器
SREG |= (1<<7);//使能全局中断
}
/***************************Timer0初始化***********************/
/***************************Timer0中断服务程序***********************/
#pragma interrupt_handler timer0_ovf_isr:10
void timer0_ovf_isr(void) //定时器溢出中断程序
{
TCNT0 = 0xF6; //从新调入初始值
count++; //每中断一次加1
if (count == 2000) //周期为20ms
{
count = 0;
PORTC |=(1<<0); //PC0置1
PORTC |=(1<<1); //PC1置1
}
if (count >= position1)PORTC &=~(1<<0); //PC0清零
if (count >= position2)PORTC &=~(1<<1); //PC1清零
}
/***************************Timer0中断服务程序***********************/
此帖出自
小平头技术问答
一周热门 更多>