下面是用軟體做的 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

創作者介紹
創作者 箱子裡的貓 的頭像
Bill Suen

箱子裡的貓

Bill Suen 發表在 痞客邦 留言(0) 人氣( 861 )