极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10465|回复: 7

【快速PWM】快速PWM配置求助

[复制链接]
发表于 2015-7-31 21:43:06 | 显示全部楼层 |阅读模式
本帖最后由 maxims 于 2015-7-31 23:42 编辑
  1. void setup() {
  2.   pinMode(3, OUTPUT);
  3.   pinMode(11, OUTPUT);
  4.   TCCR2A = _BV(COM2A1) | _BV(COM2B1) | _BV(WGM21) | _BV(WGM20);
  5.   TCCR2B = _BV(CS22);
  6.   OCR2A = 127;
  7.   OCR2B = 127;

  8.   pinMode(9, OUTPUT);
  9.   pinMode(10, OUTPUT);
  10.   TCCR1A = _BV(COM1A1) | _BV(COM1B1) | _BV(WGM21) | _BV(WGM20);
  11.   TCCR1B = _BV(CS21);
  12.   OCR1A = 127;
  13.   OCR1B = 127;
  14. }

  15. void loop() {
  16.   // put your main code here, to run repeatedly:

  17. }
复制代码

D3/D11引脚设置、输出正常。

但是D9/D10老设置不对,麻烦给个参数,谢谢。

需求:
4组PWM输出,频率1K,占空比可调,谢谢

感谢群里的“冷场王-小易”大半夜的陪我调试
  1. void setup() {
  2.   pinMode(9, OUTPUT);
  3.   pinMode(10, OUTPUT);
  4.   TCCR1A = _BV(COM1A1)|_BV(COM1B1)|_BV(WGM10);
  5.   TCCR1B = 0x0B;
  6.   OCR1A = 50;
  7.   OCR1B = 50;
  8.   pinMode(3, OUTPUT);
  9.   pinMode(11, OUTPUT);
  10.   TCCR2A = _BV(COM2A1) | _BV(COM2B1) | _BV(WGM21) | _BV(WGM20);
  11.   TCCR2B = TCCR2B & 0b11111000 | 4;
  12.   OCR2A = 50;
  13.   OCR2B = 50;
  14. }
复制代码
回复

使用道具 举报

发表于 2015-7-31 23:29:13 | 显示全部楼层
D9/D10的分频寄存器写错了,不是CS21,是CS11.
回复 支持 反对

使用道具 举报

发表于 2015-7-31 23:31:11 | 显示全部楼层
WGM21和WGM20也要改成WGM11和WGM10
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-31 23:47:15 | 显示全部楼层
seagatecm 发表于 2015-7-31 23:31
WGM21和WGM20也要改成WGM11和WGM10

第二段代码是能达到我的目的的。
能否帮忙把不是同一规范写法的变换一下吗?
回复 支持 反对

使用道具 举报

发表于 2015-8-1 00:07:21 | 显示全部楼层
TCCR1B = 0x0B;
换成位写法是
TCCR1B = _BV(WGM12) | _BV(CS11) | _BV(CS10);

这个可以通过查文档得到。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-1 00:25:13 | 显示全部楼层
seagatecm 发表于 2015-8-1 00:07
TCCR1B = 0x0B;
换成位写法是
TCCR1B = _BV(WGM12) | _BV(CS11) | _BV(CS10);

TCCR1B = 0x0B;还有这个呢?
谢谢
回复 支持 反对

使用道具 举报

发表于 2015-8-1 01:01:16 | 显示全部楼层
TCCR2B = TCCR2B & 0b11111000 | 4;
这个应该是TCCR2B = 0b1111110; ?
换个写法你测下吧
TCCR2B = _BV(WGM22) | _BV(CS21) | _BV(CS20);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-8-1 18:12:06 | 显示全部楼层
seagatecm 发表于 2015-8-1 01:01
TCCR2B = TCCR2B & 0b11111000 | 4;
这个应该是TCCR2B = 0b1111110; ?
换个写法你测下吧

好的,谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-19 00:05 , Processed in 0.062350 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表