打印
[AVR单片机]

mega16单片机初始化对OCR1AH赋值无效

[复制链接]
2014|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
feiyinglala|  楼主 | 2014-1-7 23:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 feiyinglala 于 2014-1-8 18:43 编辑

用的是Atmel mega16A   编译器是 ICCAVR v7.22   晶振是7.3728M
想把OCR1A直接赋值为0x04B0;
可是定时器这么初始化后,示波器看到的不符合这个结果。倒是OCR1AL的B0对着,OCR1AH却依然为0
初始代码如下:

static void Timer1_INIT(void)
{
uchar temp;
TCCR1B = 0x00;                                 //停止定时器
TCCR1A = 0xc2;                                 //A通道工作模式11,相位修正PWM,OC1A引脚在上升匹配时,置高电平
//PWM计数器峰值及波的频率
ICR1H = 0x07;                                 //设定了定时器1比较的峰值,同时也确定了PWM的周期
ICR1L = 0xff;
//输出占空比,与OCR1大小成反比

OCR1AH = 0x04;                                   //???为何此句不奏效
OCR1AL = 0xB0;
  
TCNT1H = 0x00;                         //计数器置0
TCNT1L = 0x00;
TIMSK &= ~0x3c;                         //不使能定时器1的A通道比较匹配,否则电路跑得太慢
TCCR1B = 0x11;                                 //启动定时器1,时钟不分频
}
按照4楼所建议的方法,参照范例程序赋值顺序就正常了。正常工作的代码如下
static void Timer1_INIT(void)
{
TCCR1B = 0x00;                                 //停止定时器

TIMSK &= ~0x3c;                         //不使能定时器1的A通道比较匹配,否则电路跑得太慢
TCNT1H = 0x00;                         //计数器置0
TCNT1L = 0x00;
//输出占空比,与OCR1大小成反比
OCR1AH = 0x04;                                   //???为何此句不奏效
OCR1AL = 0xB0;
//PWM计数器峰值及波的频率
ICR1H = 0x07;                                 //设定了定时器1比较的峰值,同时也确定了PWM的周期
ICR1L = 0xff;  
TCCR1A = 0xc2;                                 //A通道工作模式11,相位修正PWM,OC1A引脚在上升匹配时,置高电平

TCCR1B = 0x11;                                 //启动定时器1,时钟不分频
}

相关帖子

沙发
qin552011373| | 2014-1-7 23:57 | 只看该作者
用的哪个型号的片子?

使用特权

评论回复
板凳
feiyinglala|  楼主 | 2014-1-8 00:14 | 只看该作者
qin552011373 发表于 2014-1-7 23:57
用的哪个型号的片子?

Atmel 的

使用特权

评论回复
地板
qin552011373| | 2014-1-8 08:11 | 只看该作者
feiyinglala 发表于 2014-1-8 00:14
Atmel 的

ICC有个直接生成程序的功能,你可以试下,然后和你的程序对比一下

使用特权

评论回复
5
feiyinglala|  楼主 | 2014-1-8 14:36 | 只看该作者
qin552011373 发表于 2014-1-8 08:11
ICC有个直接生成程序的功能,你可以试下,然后和你的程序对比一下

说的是代码生成器?

使用特权

评论回复
6
qin552011373| | 2014-1-8 15:57 | 只看该作者
feiyinglala 发表于 2014-1-8 14:36
说的是代码生成器?

是的,就是代码生成器

使用特权

评论回复
7
feiyinglala|  楼主 | 2014-1-8 18:39 | 只看该作者
qin552011373 发表于 2014-1-8 15:57
是的,就是代码生成器

老兄高见,哈哈。按照代范例的赋值顺序就好了。多谢多谢

使用特权

评论回复
8
qin552011373| | 2014-1-9 08:33 | 只看该作者
feiyinglala 发表于 2014-1-8 18:39
老兄高见,哈哈。按照代范例的赋值顺序就好了。多谢多谢

不客气,结贴散分吧

使用特权

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

本版积分规则

21

主题

224

帖子

1

粉丝