打印
[AVR单片机]

attiny85仿真PWM遇到的难题请教

[复制链接]
1477|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zrcb|  楼主 | 2013-12-31 21:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用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工作,一直输出低电平,不知什么原因,在此请教,谢谢

相关帖子

沙发
cyanitefire| | 2014-1-1 19:44 | 只看该作者
主程序中端口输出设置是否正确

使用特权

评论回复
板凳
airwill| | 2014-1-1 21:05 | 只看该作者
看到多篇关于 proteus 进行仿真异常的问题了.
有可能是 Proteus 问题.
最后实际用芯片测试一下

使用特权

评论回复
地板
qin552011373| | 2014-1-1 21:18 | 只看该作者
最好用实际芯片测试一下

使用特权

评论回复
5
zrcb|  楼主 | 2014-1-1 22:37 | 只看该作者
cyanitefire 发表于 2014-1-1 19:44
主程序中端口输出设置是否正确

端口应该不会有问题,因为TCCR1=0x44时,PB1无pwm输出,而PB0可以正常工作;改TCCR1=0x54时,PB0和PB1输出互反相的pwm;TCCR1=0x54或64时,PB1有pwm输出,而PB0保持低电平无变化,对PB0端口任何操作均无反应

使用特权

评论回复
6
jazzyfox| | 2014-4-8 10:11 | 只看该作者
我觉得软件仿真还是有时候不一定能仿真全部特性,虽然理论上讲是没有问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

9

帖子

1

粉丝