AVR 的問題請教 |
答題得分者是:powmien
|
henrylaw
一般會員 發表:1 回覆:2 積分:0 註冊:2005-07-22 發送簡訊給我 |
|
powmien
初階會員 發表:27 回覆:80 積分:41 註冊:2004-10-20 發送簡訊給我 |
one.) 請去Atmel 官網下載 Avr Studio 4.11 版 安裝 ,机乎所有chip 的inc檔都有.... two.)關於PWM的使用請參考小弟的拙作:
【發表】[ASM]Avr ATtiny13 簡單的溫控風扇裝置 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=66350
【發表】[ASM]Avr ATtiny13 簡易頻率產生器 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=66186 這二篇都是控制pwm duty cycle 相關的...
|
henrylaw
一般會員 發表:1 回覆:2 積分:0 註冊:2005-07-22 發送簡訊給我 |
|
powmien
初階會員 發表:27 回覆:80 積分:41 註冊:2004-10-20 發送簡訊給我 |
你手上應該有 tiny13 的datasheet吧..
你可以看 Pin Configurations 那邊,PB0跟PB1是 hardware pwm 的二隻pin
所以不論是二隻一起或單獨皆可,其它的pin頂多用software Simulators,
其實我的文章裡面有約略提到怎麼算,但是這並不是很精確,而且我並沒外
接 crystal ,單純用 internal osc ... 以下片段轉自我的文章 = =+
註:首先hardware做pwm有好幾種模式,而我是選擇Fast PWM MODE
FAST PWM MODE 是由TCNTn COMPARE OCR0A 這個REGISTER 來改變PB0 準位的..
詳見 我附上的ATtiny13 DATASHEET. 要讓HARDWARE 多久改變PULSE一次才會準確呢?(OCR0A 要放入多少數值?)
註:CLK就是我的internal osc T=1/F so...
CLK=4.8Mhz => TIME= 0.208ns
註:Timer 除頻256 256*T=256/F
so Time * 256 為現在 timer 計數一次的時間
註:除頻的選擇跟你要產生的 Freq 有關系,請參考Datasheet 除頻選擇256 => TIMER 計數一次的時間為 0.208ns * 256 = 53.2ns 假設今天要振出3.6khz(3600hz) 的話 T=1/F =>3600hz大約為277.7ns 註:那Timer要數幾次才有277.7ns呢? 所以… 用277.7ns / 53.2 大約=5 277.7ns/53.2ns 約=5 因為我的HARDWARE 選擇 FAST PWM MODE ..
所以一個TCNTn 的COUNT 會產生一個PULSE (由0->1 OR 1->0 )
所以如果放5進去的話,實際產生出來PULSE 的FREQUENCY 是
3600hz * 2 =7200hz
所以要產生3600hz 的話... OCR0A 要填入 10 (5*2)
ps:因為T=1/F 在這裡再重申,這樣產生出來的pwm並不是很精確。
希望這樣講解你能理解,正所謂先求有再求好,你先想辦法輸出pwm,再去玩怎麼控制它吧…。
|
henrylaw
一般會員 發表:1 回覆:2 積分:0 註冊:2005-07-22 發送簡訊給我 |
|
powmien
初階會員 發表:27 回覆:80 積分:41 註冊:2004-10-20 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |