一,、定時/計數(shù)器PWM設(shè)計要點
根據(jù)PWM((脈寬調(diào)制(PWM:(Pulse Width Modulation)是利用微處理器的數(shù)字輸出來對模擬電路進行控制的一種非常有效的模式))的特點,,在使用ATmega128的定時/計數(shù)器設(shè)計輸出PWM時應注意以下幾點:
1.首先應根據(jù)實際的情況,確定需要輸出的PWM頻率范圍,,這個頻率與控制的對象有關(guān),。如輸出PWM波用于控制燈的亮度,由于人眼不能分辨42Hz以上的頻率,,所以PWM的頻率應高于42Hz,,否則人眼會察覺到燈的閃爍。
2.快速PWM可以的到比較高頻率的PWM輸出,,但占空比的調(diào)節(jié)精度稍微差一些,。此時計數(shù)器僅工作在單程正向計數(shù)方式,計數(shù)器的上限值決定PWM的頻率,,而比較匹配寄存器的值決定了占空比的大小,。PWM頻率的計算公式為:
3.然后根據(jù)需要PWM的頻率范圍確定ATmega128(是ATMEL公司的 8位系列單片機的最高配置的一款單片機,應用極其廣泛)定時/計數(shù)器的PWM工作方式,。AVR定時/計數(shù)器的PWM模式可以分成快速PWM和頻率(相位)調(diào)整PWM兩大類,。
PWM頻率 = 系統(tǒng)時鐘頻率/(分頻系數(shù)*(1+計數(shù)器上限值)) AVR單片機是1997年由ATMEL公司研發(fā)出的增強型內(nèi)置Flash的RISC(Reduced 根據(jù)PWM((脈寬調(diào)制(PWM:(Pulse Width Modulation)是利用微處理器的數(shù)字輸出來對模擬電路進行控制的一種非常有效的模式))的特點,在使用ATmega128的定時/計數(shù)器設(shè)計輸出PWM時應注意以下幾點:
1.首先應根據(jù)實際的情況,,確定需要輸出的PWM頻率范圍,,這個頻率與控制的對象有關(guān)。如輸出PWM波用于控制燈的亮度,,由于人眼不能分辨42Hz以上的頻率,,所以PWM的頻率應高于42Hz,否則人眼會察覺到燈的閃爍,。
2.快速PWM可以的到比較高頻率的PWM輸出,,但占空比的調(diào)節(jié)精度稍微差一些。此時計數(shù)器僅工作在單程正向計數(shù)方式,,計數(shù)器的上限值決定PWM的頻率,,而比較匹配寄存器的值決定了占空比的大小。PWM頻率的計算公式為:
3.然后根據(jù)需要PWM的頻率范圍確定ATmega128(是ATMEL公司的 8位系列單片機的最高配置的一款單片機,,應用極其廣泛)定時/計數(shù)器的PWM工作方式,。AVR定時/計數(shù)器的PWM模式可以分成快速PWM和頻率(相位)調(diào)整PWM兩大類,。
PWM頻率 = 系統(tǒng)時鐘頻率/(分頻系數(shù)*(1+計數(shù)器上限值)) AVR單片機是1997年由ATMEL公司研發(fā)出的增強型內(nèi)置Flash的RISC(Reduced Instruction Set CPU) 精簡指令集高速8位單片機,。
4.頻率(相位)調(diào)整PWM模式的占空比調(diào)節(jié)精度高,但輸出頻率比較低,,因為此時計數(shù)器僅工作在雙向計數(shù)方式,。同樣計數(shù)器的上限值決定了PWM的頻率,,比較匹配寄存器的值決定了占空比的大小。PWM頻率的計算公式為:
PWM頻率 = 系統(tǒng)時鐘頻率/(分頻系數(shù)*2*計數(shù)器上限值))
5.快速PWM模式適合要求輸出PWM頻率較高,,但頻率固定,,占空比調(diào)節(jié)精度要求不高的應用。
6.相位調(diào)整PWM模式適合要求輸出PWM頻率較低,,但頻率固定,,占空比調(diào)節(jié)精度要求高的應用。當調(diào)整占空比時,,PWM的相位也相應的跟著變化(PhaseCorrect),。
7.在PWM方式中,計數(shù)器的上限值有固定的0xFF(8位T/C),;0xFF,、0x1FF、0x3FF(16位T/C),。
8.頻率和相位調(diào)整PWM模式適合要求輸出PWM頻率較低,,輸出頻率需要變化,占空比調(diào)節(jié)精度要求高的應用,。此時應注意:不僅調(diào)整占空比時,,PWM的相位會相應的跟著變化;而一但改變計數(shù)器上限值,,即改變PWM的輸出頻率時,,
會使PWM的占空比和相位都相應的跟著變化(Phase and Frequency Correct)。
二,、 PWM應用設(shè)計參考
PWM模式可以分成快速PPWM是一種對模擬信號電平進行數(shù)字編碼的方法,。通過高分辨率計數(shù)器的使用,方波的占空比被調(diào)制用來對一個具體模擬信號的電平進行編碼,。PWM信號仍然是數(shù)字的,,因為在給定的任何時刻,滿幅值的直流供電要么完全有(ON),,要么完全無(OFF),。電壓或電流源是以一種通(ON)或斷(OFF)的重復脈沖序列被加到模擬負載上去的。通的時候即是直流供電被加到負載上的時候,,斷的時候即是供電被斷開的時候,。只要帶寬足夠,任何模擬值都可以使用PWM進行編碼,。WM和頻率(相位)調(diào)整PWM兩大類,。
* 設(shè)置提供調(diào)制方波的片上定時器/計數(shù)器的周期
* 在PWM控制寄存器中設(shè)置接通時間
* 設(shè)置PWM輸出的方向,這個輸出是一個通用I/O管腳
* 啟動定時器
* 使能PWM控制器PWM模式可以分成快速PWM和頻率(相位)調(diào)整PWM兩大類。
下面在示例中使用PWM方式來產(chǎn)生一個1KHz左右的正弦波,,幅度為0-Vcc/2,。
首先按照下面的公式建立一個正弦波樣本表,樣本表將一個正弦波周期分為128個點,,每點按7位量化(127對應最高幅值Vcc/2):
f(x) = 64 + 63 * sin(2πx/180) x∈[0…127]
如果在一個正弦波周期中采用128個樣點,,那么對應1KHz的正弦波PWM的頻率為128KHz。實際上,,按照采樣頻率至少為信號頻率的2倍的取樣定理來計算,,PWM的頻率的理論值為2KHz即可??紤]盡量提高PWM的輸出精度,,實際設(shè)計使用PWM的頻率為16KHz。這意味著在128點的正弦波樣本表中,,每隔8點取出一點作為PWM的輸出,。
程序中用的ATmega128的8位T/C0工作模式為相位調(diào)整PWM模式輸出,系統(tǒng)時鐘為8MHz,,分頻系數(shù)為1,,其可以產(chǎn)生最高PWM頻率為:
8000000Hz / 510 =
15686Hz。每16次輸出構(gòu)成一個周期正弦波,,正弦波的頻率為980.4Hz,。PWM由OC0(PB4)引腳輸出。參考程序如下(ICCAVR),。
//ICC-AVR application builder : 2004-08
// Target : M128
// Crystal: 8.0000Mhz
#include
#include
#pragma data:code
// 128點正弦波樣本表
const unsigned char auc_SinParam[128] = {
64,67,70,73,76,79,82,85,88,91,94,96,99,102,104,106,109,111,113,115,117,118,120,121,
123,124,125,126,126,127,127,127,127,127,127,127,126,126,125,124,123,121,120,118,
117,115,113,111,109,106,104,102,99,96,94,91,88,85,82,79,76,73,70,67,64,60,57,54,51,48,
45,42,39,36,33,31,28,25,23,21,18,16,14,12,10,9,7,6,4,3,2,1,1,0,0,0,0,0,0,0,1,1,2,3,4,6,
7,9,10,12,14,16,18,21,23,25,28,31,33,36,39,42,45,48,51,54,57,60};
#pragma data:data
unsigned char x_SW = 8,X_LUT = 0;
#pragma interrupt_handler timer0_ovf_isr:17
void timer0_ovf_isr(void)
{
X_LUT += x_SW; // 新樣點指針
if (X_LUT > 127) X_LUT -= 128; // 樣點指針調(diào)整
OCR0 = auc_SinParam[X_LUT]; // 取樣點指針到比較匹配寄存器
}
void main(void)
{
DDRB |= 0x10; // PB4(OC0)輸出
TCCR0 = 0x71; // 相位調(diào)整PWM模式,,分頻系數(shù)=1,正向控制OC0
TIMSK = 0x01; // T/C0溢出中斷允許
SEI(),; // 使能全局中斷
while(1)
{……};
}
每次計數(shù)器溢出中斷的服務(wù)中取出一個正弦波的樣點值到比較匹配寄存器中,,用于調(diào)整下一個PWM的脈沖寬度,這樣在PB4引腳上輸出了按正弦波調(diào)制的PWM方波,。當PB4的輸出通過一個低通濾波器后,,便得到一個980.4Hz的正弦波了。如要得到更精確的1KHz的正弦波,,可使用定時/計數(shù)器T/C1,,選擇工作模式10,設(shè)置ICR1=250為計數(shù)器的上限值,。
ATMEL在系統(tǒng)級集成方面所擁有的世界級專業(yè)知識和豐富的經(jīng)驗使其產(chǎn)品可以在現(xiàn)有模塊的基礎(chǔ)上進行開發(fā),,保證最小的開發(fā)延期和風險。憑借業(yè)界最廣泛的知識產(chǎn)權(quán)(IP)組合,,Atmel提供電子系統(tǒng)完整的系統(tǒng)解決方案的廠商,。 這使客戶能夠帶領(lǐng)他們與市場的電子產(chǎn)品的體積更小,更聰明,更符合成本效益比以往任何時候都通用的服務(wù),。 Atmel集成電路的主要集中在消費,,工業(yè),,安全,,通信,計算和汽車市場,。在ATMEL公司網(wǎng)站上,,給出了使用一個定時/計數(shù)器實現(xiàn)雙音頻撥號(雙音頻用兩中頻率組合表示一個號碼。比如你撥7 就是 1230 和 990HZ兩種頻率,。5 為1230 和 1100, 相當與不同的二進制組合,。)