這幾天在看AVR單片機的書。ASURO的項目的編程是建立在已有的成熟函數上,所以導致我對AVR單片機的運行機理(中斷、定時器的使用)不甚了解。突然一個個超聲波模塊的程序放在眼前,才發現我連AVR單片機的了解基本上等于零。另外一個項目需要用mega128控制直流電機,還有和無線、有線遙控器的通信,電路(模塊)需要自己搭起來,那么就必須知道AVR單片機的原理和編程。
和已經學過的51單片機相比,MEGA系列單片機是十分高級的單片機,功能強大,因而在構造和使用上也復雜了一些。
存儲器區別,AVR分為5個部分,訪問指令上有區別。
輸入輸出,51是準雙向口,每個端口只有一個寄存器。而AVR的I/O口是標準雙向口,每個端口有三個寄存器,DDRX(輸出使能),PORTX(輸出數據,上拉使能?),PINX(輸入管腳)。
定時器,51的定時器兩種用法,即以晶振頻率的十二分頻信號作為輸入的定時器工作方式,或以外部引腳INT0,INT1上輸入信號的計數器工作方式。 而AVR的定時器除了普通的定時/計數功能外,還有一些增強的功能,如:比較匹配(?),PWM調制器,由ICP引腳或模擬比較器觸發的捕捉功能(?)。在選擇輸入信號上,分頻比有1、8、64、256、1024幾種,作為計數器使用,既可上升沿觸發,也可以下降沿觸發。如下,一部分和定時器相關的寄存器
T0: TCCR0: CS02 CS01 CS00 分頻比
T1: TCCR1A: COM1X1/0
PWM11/0
TCCR1B: ICNC1,CTC1,ICES1
TCNT1
OCIX 等等
C中的一些位操作已經模塊化了,如PORTB|=(1<<2);D2位置一
PORTB&=~(1<<6);D6位清零
TCCR2=(1<<WGM21)|(1<<CS20); WGM21、CS20置一,其余位清零。
PWM脈寬調制波
PWM 是脈沖寬度調制的簡稱。實際上,PWM 波也是一個連續的方波,但在一個周期中,
其高電平和低電平的占空比是不同的。一個典型 PWM 的波形如圖 8-15 所示。
在圖中,T 是 PWM 波的周期,T1 是高電平的寬度,Vcc 是高電平值。當該 PWM 波通過一個積分器后(低通濾波器)后,我們可以得到其輸出的平均電壓為:
式中,T1/T 稱為 PWM 波的占空比?刂普{節和改變 T1 的寬度,即改變 PWM 的占空比,
就可以的到不同的平均電壓輸出。因此在實際應用中,常利用 PWM 波的輸出,實現 D/A 轉換,調節電壓或電流控制改變馬達的轉速,實現變頻控制等功能。
一個 PWM 方波的參數有頻率、占空比和相位(在一個 PWN 周期中,高低電平轉換的起始時間),其中頻率和占空比為主要的參數。圖 8-16 為 3 個占空比都為 2/3 的 PWM 波形,盡管他們輸出的平均電壓是一樣的,但其中(b)的頻率比(a)高一倍,相位相同;而(c)與(a)的頻率相同,但相位不同。
在實際應用中,除了要考慮如何正確的控制和調整 PWM 波的占空比,獲得達到要求的平
均電壓的輸出外,還需要綜合的考慮 PWM 的周期、PWM 波占空比調節的精度(通常用 BIT 位表示)、積分器的設計等。而且這些因素相互之間也是互相牽連的。根據 PWM 的特點,在使用 AVR 定時計數器設計輸出 PWM 時應注意以下幾點:
1,首先應根據實際的情況,確定需要輸出的 PWM 波的頻率范圍。這個頻率與控制的對
象有關。如輸出的 PWM 波用于控制燈的亮度,由于人眼不能分辨 42Hz 以上的頻率,
所以 PWM 的頻率應高于 42Hz,否則人眼會察覺到燈的閃爍。PWM 波的頻率越高,經
過積分器輸出的電壓也越平滑。
2,同時還要考慮占空比的調節精度。同樣,PWM 波占空比的調節精度越高,經過積分
器輸出的電壓也越平滑。但占空比的調節精度與 PWM 波的頻率是一對矛盾,在相同
的系統時鐘頻率時,提高占空比的調節精度,將導致 PWM 波頻率的降低。
3,由于 PWM 波的本身還是數字脈沖波,其中含有大量豐富的高頻成分,因此在實際使
用中,還需要一個好的積分器電路,如采用有源低通濾波器,或多階濾波器等,能
將高頻成分有效的去除掉,從而獲得比較好的模擬變化信號。