我用tiny85的timer1进行pwm控制,由于芯片端口资源少,所以只使用PB1做pwm输出端口,而PB0用作其它的输出信号I/O端口,按照手册说明,对timer1进行了设置,主要是TCCR1寄存器, PWM1A=1(PWMA使能),COM1A1=1,COM1A0=0,(OC1A 匹配时清0,/OC1A末连接),只使用PB1,而PB0未用,初始化过程如下:
//TIMER1 initialize - prescale:64
// desired value: 100Hz
// actual value: 100.160Hz (0.2%)
void timer1_init(void)
{
TCCR1=0x00;
TCNT1=0x20; //计数器
OCR1A=0x08;
OCR1B=0x0C;
OCR1C=0xF0; //TOP of OC1A&OC1B
TIMSK=0x02;
TIFR=0x00;
GTCCR=0x00; //一般timer1控制寄存器,pwm1B en
DTPS=0x00; //输出pwm死区设置
DT1A=0x00;
DT1B=0x00;
TCCR1=0x64; //timer1控制寄存器,pwm1A en,OC1A out
}
但使用proteus7.8进行仿真时,却始终不能让PB0工作,一直输出低电平,不知什么原因,在此请教,谢谢 |