PWM很常用,AVR自带内部PWM功能,分为快速PWM模式和相位修正PWM模式。

我们这里选择方式15 ,由OCR1A保存上限值,由OCR1B保存匹配值,所以输出管脚 OCR1A不能输PWM,只能有OCR1B输出PWM信号。

如果用方式 5,6,7模式 上限值是固定的,所以我们就可以用OCR1A和OCR1B保存匹配值

OCR1A和OCR1B都可以输出PWM信号。

快速PWM时序图

根据此公式计算出OCR1A和OCR1B的数值

OCR1A:

1,11059200 / 100 /64 = 1728                         // 11.0592MHz晶振系数 / 100Hz频率 / 64分频

2,1728 - 1 = 1727                                        //得到上限值,赋值给OCR1A

OCR1B:

1,1727 / 5   =    345.4    ( 取值为345 )          //得到匹配值,设定为2ms,赋值给OCR1B

100Hz表示每秒震动100次,所以周期是1s / 100 = 0.01s 即10ms

100Hz周期是10ms,要定时2ms即用 1727 / 5 =345.4 取值为345

所以也可以知道产生的是占空比为20%的PWM信号

测试代码:

#include <iom16.h>

void FastPWM(void)

{

DDRD_Bit4 = 1; //    OC1B 管脚设置为输出

DDRD_Bit5 = 1; //    OC1A 管脚设置为输出

TCCR1A=(0<<COM1A1)|(1<<COM1A0)|(1<<COM1B1)|(0<<COM1B0)|(1<<WGM11)|(1<<WGM10);

// OC1A 作为上限值 电平取反   OC1B 作为比较值 比较匹配时清零,到达上限值是置1

// TCCR1A ==> COM1A1 , COM1A0 , COM1B1 , COM1B0 , FOC1A , FOC1B , WGM11 , WGM10

//               0        1        1        0       无关    无关     1       1

TCCR1B=(1<<WGM13)|(1<<WGM12)|(0<<CS12)|(1<<CS11)|(1<<CS10);

// 波形产生模式15 , 64分频

// TCCR1B ==> ICNC1 , ICES1 , - , WGM13 , WGM12 , CS12 , CS11 , CS10

//             无关    无关          1       1      0      1      1

OCR1A=1727;   // 晶振频率 11.0592MHz , 设定 100Hz PWM信号 , 64分频

OCR1B=345;     // 为2ms的高电平持续时间

}

void main(void)

{

FastPWM();

}

转载于:https://www.cnblogs.com/zhugeanran/p/8541189.html

AVR 定时器快速PWM模式使用相关推荐

  1. 5. avr定时器/计数器1 --TC1 --快速PWM输出 (比较输出--快速PWM模式)

    快速PWM 模式(WGM13:0 = 5.6. 7.14 或15) 可用来产生高频的PWM 波形.快速PWM模式与其他PWM模式的不同之处是其单边斜坡工作方式.计数器从BOTTOM计到TOP,然后立即 ...

  2. atmega8 例程:T1定时器 快速PWM

    /***************************************************************** * 函数库说明:ATMEGE8 T1定时器 快速PWM * 版本: ...

  3. HAL库教程10:定时器的PWM模式应用

      本节通过定时器的PWM模式驱动无源蜂鸣器,来演奏一段音乐.本博客在掌机的系列教程中介绍过蜂鸣器的驱动原理,感兴趣的可以参考电子琴 无源蜂鸣器驱动电路   蜂鸣器按照有无震荡源(不是电源),可以分为 ...

  4. NXP JN5169使用定时器进行PWM输出和定时功能

    NXP JN5169使用定时器进行PWM输出和定时功能 一.定时器介绍 1.定时器介绍 2.定时器可操作的模式 3.定时器DIO 4.定时器和PWM模式 5.定时器中断 二.实现代码 1.PWM输出 ...

  5. DMA+TIM3通用定时器输出PWM波形驱动TM1814

    项目中用到了TM1814,这是芯片的简单介绍. 可以看出0码1码对于占空比时序有比较严格的要求,0码1码周期均在1.25us-2.5us,低电平时间的典型值分别为360ns和720ns.原先采用输出时 ...

  6. STM32 - 定时器的设定 - 基础-04 - 输出波形控制 - PWM 模式

    PWM为诸多应用的基本波形,如何实现和如何定制,首先要了解STM32中PWM的实现方法. 在STM32中,PWM的实现主要通过控制 OCxRef (active high).:output compa ...

  7. 【转】STM32 定时器 输出比较模式和PWM输出模式的区别

    最近在做电机控制 ,看到一篇好总结!! 比较输出模式 这个模式的特点是4个通道的输出周期频率是一样的.. 频率周期由 预装载寄存器 ARR 的大小确定. Cubmx中叫Counter Period - ...

  8. stm32 高级定时器产生PWM

    用stm32的高级定时器TIM1和TIM8产生PWM,需要注意: 1.都有TIM1,但只有flash容量大于256K的大容量单片机才有TIM8 2.高级定时器相对于通用定时器,多了TIM_CtrlPW ...

  9. stm32通用定时器的PWM输出

    配置过程:(以TIM3为例,其CH1-CH4为:PA6.PA7.PB0.PB1) 1)开启TIM3时钟,配置4个IO口为复用推挽输出. 2)设置TIM3的ARR和PSC来控制PWM的周期. 3)设置T ...

最新文章

  1. 数字化探索:建立学习型组织,HR 也能驱动业务营收?
  2. Error - section 'InterruptVectorLow' can not fit the absolute section. Section 'InterruptVectorLow'
  3. 揭秘!2020年4月全国程序员工资统计,新出炉!(包含地区和语言排行)
  4. html5创建对象的方法,JavaScript面向对象-使用工厂方法和构造函数方法创建对象...
  5. jquery中的serializeArray方法的使用
  6. 如何在SharePoint 2010项目中引用UserProfiles.dll
  7. OAuth和OpenID的区别
  8. 【cogs2711】jump,二分答案+倍增套ST表
  9. (转) mp4编码全介绍 (一)
  10. bootstrap 和 jqueryui
  11. 《成功者的窘境》克里斯滕森 epub+mobi+azw3
  12. 阿里DATAV的使用方法(大屏生成工具)
  13. 用word宏命令批量修改图片尺寸大小(亲测好用!)
  14. 验证Kubernetes YAML的最佳实践和策略
  15. 转 主流蓝牙BLE控制芯片详解(5):Dialog DA14580
  16. 基于stm32的自定义HID设备开发与上位机通讯实现
  17. word表格分开快捷键_Word拆分与合并单元格快捷键
  18. 牧牛图-南怀瑾上师讲解
  19. 一文看懂队列(FIFO)
  20. 智能水表集抄系统——助力智慧城市公共事业发展!

热门文章

  1. Java中计算处理中文两个字符长度问题解决(中文2个字符,英文1个字符)
  2. c语言的文件打开模式,c语言文件打开模式 - osc_b2jf5efr的个人空间 - OSCHINA - 中文开源技术交流社区...
  3. 基于经度坐标校正鱼眼图像
  4. 三年大厂面试官——二面题(偏难)
  5. python 散点图 自定义x轴标签/经度180到-180连接
  6. 电视2k和4k有什么区别
  7. Maven找不到依赖终极解决方案
  8. 74ls48电子集成块
  9. 一文带你看懂算术编码(C语言)
  10. 日常论文分享---持续更新中