说明:没有示波器的童鞋,大家可以在PB4口接出一个LED灯看出这个波形的大致效果,建议不要用PB4口直接去驱动直流电机,因为没有驱动芯片,驱动电流太小,电机难以启动,由于电机内部没有反电动势产生,电流会全部被线圈电阻消耗,导致电机发热可能损坏电机!
此列是快速PWM模式运行的定时器T0:
#include <iom128v.h>
#include<macros.h>
#define uint unsigned int
#define uchar unsigned char
void delay_ms(uint n)
{
uint i=0,j;
while(i<n)
{for(j=0;j<1000;j++);
i++;
}
}
void pwm0_init(void)
{
DDRB |= BIT(PB4);
TCCR0 = 0X00;
OCR0 = 0X7F; //8位的定时计数器的初值设定为0x7f
TCNT0 = 0; //计数器
TCCR0 = 0X6A; //设置为快速pwm模式,采取8分频
}
void main(void)
{
uchar wide;
pwm0_init();
while(1)
{
delay_ms(10);
// if(++wide==255) //可以不用写这个,因为是unsigned char的wide变量,加到255后会自变零的。
// wide=0;
OCR0=wide++;
}
}
文章评论(0条评论)
登录后参与讨论