SPWM實現方法 2 單定時器中斷更新模式

2021-09-29 01:51:46 字數 542 閱讀 1783

前面介紹了雙定時器實現的方法,這篇介紹下單定時器實現方法

二.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...