可以用定時器中斷的方法獲得PWM訊號,如定時器定時100US,先讓某管腳輸出高電平,用一變數A作計數器,中斷一次變數加一,中斷10次A清0,另設一變數B,數值取1-10,中斷程式中比較A和B的值,如果A和 B相等,則將該引腳輸出低電平,直到計數器A清0時再輸出高電平,就輸出了一定佔空比的方波
改變B的值,就改變了佔空比,缺點頻率不能太高,因中斷程式執行要花費較長時間,定時器定時不能太短,如定時10US,可能會小於中斷程式的執行時間,造成造成PWM 頻率低於預想值或程式混亂
若定時100US,中斷10次清0,則佔空比 變化最小單位就是10%,如果改成中斷100次(10MS)清0,雖佔空比可以1%為單位改變,但獲得的PWM方波頻率只有100HZ,所需濾波電容和電感都 會大很多
硬體PWM頻率就可以高多了,原理和定時器類似,但時間比較和輸出引腳狀態翻轉 計數器清0都是硬體自動完成的,所產生的PWM方波頻率達10KHZ沒有問題,且調整幅度可以達1/256
可以用定時器中斷的方法獲得PWM訊號,如定時器定時100US,先讓某管腳輸出高電平,用一變數A作計數器,中斷一次變數加一,中斷10次A清0,另設一變數B,數值取1-10,中斷程式中比較A和B的值,如果A和 B相等,則將該引腳輸出低電平,直到計數器A清0時再輸出高電平,就輸出了一定佔空比的方波
改變B的值,就改變了佔空比,缺點頻率不能太高,因中斷程式執行要花費較長時間,定時器定時不能太短,如定時10US,可能會小於中斷程式的執行時間,造成造成PWM 頻率低於預想值或程式混亂
若定時100US,中斷10次清0,則佔空比 變化最小單位就是10%,如果改成中斷100次(10MS)清0,雖佔空比可以1%為單位改變,但獲得的PWM方波頻率只有100HZ,所需濾波電容和電感都 會大很多
硬體PWM頻率就可以高多了,原理和定時器類似,但時間比較和輸出引腳狀態翻轉 計數器清0都是硬體自動完成的,所產生的PWM方波頻率達10KHZ沒有問題,且調整幅度可以達1/256