前面介紹了雙定時器實現的方法,這篇介紹下單定時器實現方法
二.spwm實現方法-單定時器中斷更新模式
同樣使用採用查表法。定時器(tim-a)設定為pwm模式。
載波:tim-a 定時器的pwm頻率
基波週期:載波週期*spwm點數
例:載波f=20khz 基波f=50hz
tim-a pwm週期為0.05ms ,如果達到50hz的基波輸出,需要定時器在乙個基波週期20ms內中斷20/0.05ms=400次(即修改400次pwm占空比)。假設使用單極性調製則半波的點數應該是200點。所以spwm陣列長度200。在中斷內查表不停的進行更新pwm的占空比。
優點:使用乙個定時器,固定的載波下可提高spwm精度。pwm不存在被定時器打斷的情況,輸出波形比較好,基波頻率穩定。
缺點:載波頻率固定,基波頻率固定的情況下spwm陣列長度固定。變頻的話陣列長度不固定,佔ram。
硬體連線:
定時器中斷
系統初始化的時候在預設的系統初始化函式 systeminit 函式裡面已經初始化 apb1 的時鐘為 2 分頻,所以 apb1 的時鐘為 36m。當 apb1 的時鐘分頻數為 1 的時候,tim2 7 的時鐘為 apb1 的時鐘,而如果 apb1 的時鐘分頻數不為 1,那麼 tim2 7 的時鐘頻率...
定時器中斷
tmod 0x01 th0 65536 50000 256 tl0 65536 50000 6 ea 1 et0 1 tr0 1 void timer0 interrupt 1 ea 1 開總中斷允許 et0 1 開定時器0允許 tmod 0x01 定時器選擇軟體啟動,工作方式為1 th0 6553...
定時器 中斷
1 實現電視劇集中的10s定時炸彈功能 炸彈炸了用蜂鳴器模擬 include unsigned char code smgduan 17 unsigned int ms,sec 10,s sbit p1 0 p1 0 void delay unsigned int n void isr timer0...