• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

帮帮我这个小白 ATmega128 PWM 产生方波

menrou 2017-02-20 浏览量:1186

      板子是ATmega128  PWM 产生方波   用的语言为GCC   具体实现为编程产生一个方波。 其频率计算公式为fclock/(1+TOP),如取TOP为1,则频率为fclock/2;取如TOP为2,则频率为fclock/3。但是我如想取频率介于fclock/2和fclock/3之间的任意一值的话,该怎么实现呢?​
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • AVR单片机的PWM输出,由时钟频率、时钟分频系数、时间常数等几个参数决定。硬件产生任意频率的PWM是做不到的,只能通过这几个参数的组合计算,看能不能产生需要的频率。


    当然,如果要求不高,可以用延时的方法,这样产生频率的范围就大多了。

    • 发布于 2017-02-20
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:6
  • 用定时器就可以产生方波了                
    • 发布于2017-02-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 不能直接设置频率吗?,如果不行的话,可以把top设置成double值,top设置成1.2,1.5等等
    • 发布于2017-02-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 无法实现,只能是改变fclock的值,可以通过更改频率来达成
    • 发布于2017-02-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 原則上這類除頻方法都是整數除法,所以如果您要介於fclock/2~fclock/3之間的話

    必須對fclock作變更,但如果這是主時鐘的話可能會有些問題

    應該要分頻出來的外設時鐘才能正常修改,另外應該無法任意設置中間任何頻率,只有範圍內的特定幾個頻率

    附上PWM頻率運算式

    MCU Clock / [Prescaler * Counter(16 Bit為65535)]

    以上供參考

    • 发布于2017-02-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 先定义一个输出IO口,比如:pinMode(3,OUTPUT);

    再在循环体中设置输出脉宽输出,比如:analogWrite(3,duty);

    其中的duty就是你给的脉宽,数值由你自己设定。可以尝试1~255的值。

    在PIN3就能检测到PWM信号了。试试吧?

    • 发布于2017-02-22
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

帮帮我这个小白 ATmega128 PWM 产生方波