- 註冊時間
- 2012-3-16
- 最後登錄
- 2025-1-4
- 主題
- 查看
- 積分
- 173
- 閱讀權限
- 40
- 文章
- 223
- 相冊
- 0
- 日誌
- 0
![Rank: 4](static/image/common/star_level3.gif)
狀態︰
離線
|
單晶片微電腦 AVR ATmega16 有 4 channel PWM 脈波寬度調變,可設計 duty cycle 工作週期 ( 占空比 )
T/C 1 波形產生模式 WGM13 WGM12 WGM11 WGM10 可規劃 mode 0 ~ mode 15
5 種 快速 PWM 模式,5 種 相位修正 PWM 模式,2 種 相位與頻率修正 PWM 模式
現今利用 8 位快速 PWM 模式,pin 19 (OC1A)PD5 輸出 Vpp 5v 的 正弦波 。- #include <mega16.h>
- #include <delay.h>
- #include <math.h>
- // Declare your global variables here
- // 宣告全域變數,存放正弦表
- char sinTable[100];
- // 初始化 正弦表
- void initialSinTable(void)
- {
- char i;
- for(i=0;i<100;i++)
- sinTable[i]=127+sin(0.0628*i)*128;
- }
- // 255/2=127.5 127 指中點值
- // 0.0628 是指一個週期分 100 份
- // 2Pi/100 = 2*3.14/100 = 0.0628
-
- void main(void)
- {
- // Declare your local variables here
- char j;
複製代碼- initialSinTable();
- while (1)
- {
- for(j=0;j<100;j++)
- {
- OCR1A=sinTable[j]; // 載入占空比值
- delay_ms(1);
- }
- }
複製代碼
|
-
總評分: 威望 + 2
查看全部評分
|