下面是用軟體做的 PWM function......
uint8_t softPWM(uint16_t period, uint8_t duty)
{
if(cnt > period)
cnt = 0;
if(cnt <= duty)
return on;
else //if((cnt > duty)) && (cnt <= period))
return off;
}
cnt 是由 TMR0 控制的變數,在一定的時間因為中斷而累加。
比如 cnt 設成每 1 msec 會 +1,如果 period 設成 20,duty 設成 10,輸出會是 50 Hz、1/2 duty 的 PWM 訊號。
EX: GPIO.pin = softPWM(20, 10);
當然,要有類似以下的敘述:
#define on 1
#define off 0
請先 登入 以發表留言。