3571|1

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

快速pwm和捕获计算频率 [复制链接]

  1. <P>void timer1()
  2. {
  3. TIMSK=(1<<TICIE1)|(1<<TOIE1); //0X02输入捕获中断使能
  4. TCCR1B=(1<<ICNC1)|(1<<ICES1)|(1<<CS12); //输入捕获噪音使能,上升沿捕获,时钟256分频1us计数一次
  5. TCNT1=0X85ed;// ###定时1s#########
  6. TIFR=(1<<ICF1)|(1<<TOV1); //0x20写"1"清输入捕获标志位
  7. //SREG=SREG&0x7f;
  8. }</P>
复制代码
  1. void fre_pwm(int i,int b)
  2. {
  3. DDRD |=(1<<4); // OC1B 管脚设置为输出
  4. DDRD |=(1<<5); // OC1A 管脚设置为输出
  5. TCCR1A=(0<<COM1A1)|(1<<COM1A0)|(1<<COM1B1)|(0<<COM1B0)|(1<<WGM11)|(1<<WGM10);
  6. // OC1A 作为上限值 电平取反 OC1B 作为比较值 比较匹配时清零,到达上限值是置1
  7. TCCR1B=(1<<WGM13)|(1<<WGM12)|(0<<CS12)|(1<<CS11)|(1<<CS10);
  8. // 波形产生模式15 , 64分频
  9. OCR1A=i; // 晶振频率16MHz , 64分频
  10. OCR1B=i*b/100; // 占空比
  11. }
复制代码
快速pwm和捕获的功能都用到了TCCR1B这个寄存器,是不是不能同时在一个main函数下使用,如果不能应该怎么样改才能同时使用,我用的是atmega16的的芯片。

最新回复

就一个计数器,你让他捕获用还是PWM输出用,你用TIME0输出PWM,让TIME1捕获,就用可以了,为什么一定要用一个呢   详情 回复 发表于 2014-9-25 23:45
点赞 关注
 

回复
举报

20

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
就一个计数器,你让他捕获用还是PWM输出用,你用TIME0输出PWM,让TIME1捕获,就用可以了,为什么一定要用一个呢
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表