[ASM]Avr ATtiny13 簡易頻率產生器 |
|
powmien
初階會員 發表:27 回覆:80 積分:41 註冊:2004-10-20 發送簡訊給我 |
小小範例放上來讓各位先進見笑了m(_-_)m...
附SOURCE ASM跟ATtiny13 的DATASHEET(參考用)...
ATtiny13 有8-pin,PortB 只有6-bit(PB0-PB5),
INPUT : PB2 , PB3
OUTPUT : PB0 , PB1 CLK : (INTERNAL) 4.8 Mhz
PB2 PB3 PB1 PB0 -------------------------------- 0 0 100hz 5000hz 0 1 50hz 2500hz 1 0 120hz 7200hz 1 1 60hz 3600hz --------------------------------DUTY CYCLE: 50% 我用 HARDWARE 先產生PB0的PULSE, 再用SOFTWARE 去算出PB1的PULSE. EX:3600hz 約 277.7ns FAST PWM MODE 是由TCNTn COMPARE OCR0A 這個REGISTER 來改變PB0 準位的.. 詳見 我附上的ATtiny13 DATASHEET. 要讓HARDWARE 多久改變PULSE一次才會準確呢?(OCR0A 要放入多少數值?) CLK=4.8Mhz => TIME= 0.208ns 除頻選擇256 => TIMER 計數一次的時間為 0.208ns * 256 = 53.2ns 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 如有錯誤請指正。
附加檔案:66186_Source.rar
|
powmien
初階會員 發表:27 回覆:80 積分:41 註冊:2004-10-20 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |