Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 6255|回復: 2
打印 上一主題 下一主題

請問如何修改analogWrite 改變PWM輸出頻率

[複製鏈接]
跳轉到指定樓層
1#
發表於 2015-10-8 11:31:54 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
請問arduino所產生的PWM要如何調整頻率呢?

arduino analogWrite內定的PWM時間週期似乎2ms輸出PWM為500hz




目前是想把500hz,調降到100hz
有哪些方法呢?
2#
發表於 2015-10-8 12:48:42 | 只看該作者
http://playground.arduino.cc/Code/PwmFrequency
在UNO 上試過 OK, 其他就不一定了
不過他的倍數有限制, 大部份是 2^N 次方
裡面有寫各接腳的限制
hrean 該用戶已被刪除
3#
發表於 2015-11-2 15:00:17 | 只看該作者
這個主題我之前有研究過
在Arduino現有的API是不能改頻率
只能直接改Atmega MCU的暫存器,改變除頻的量
以Arduino UNO為例,pin 5 的 PWM 輸出是從 timer 0 所產生的
原始的除頻量是64
雖然可以除頻量,不過不能微調,只有幾個選項可以選 (如下表)

要如何才能夠改CS00~CS02?
可以使用bitWrite()函式來做,範例如下:

bitWrite(TCCR0B, CS00, 1);
bitWrite(TCCR0B, CS01, 0);
bitWrite(TCCR0B, CS02, 1);  //修改除頻量為 1024
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-11-24 10:13 , Processed in 0.187249 second(s), 10 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表