線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1745
推到 Plurk!
推到 Facebook!

[ASM]Avr ATtiny13 簡易頻率產生器

 
powmien
初階會員


發表:27
回覆:80
積分:41
註冊:2004-10-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-04 10:42:51 IP:61.59.xxx.xxx 未訂閱
小小範例放上來讓各位先進見笑了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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-04 10:55:09 IP:61.59.xxx.xxx 未訂閱
用ATMEL 的AVR studio 可以正確的simulation出來… 也可以直接燒錄用示波器觀測。
系統時間:2024-07-07 8:41:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!