Ⅰ 用一個定時器能使單片機的兩個輸出口產生2個不同的pwm脈沖嗎懂得話給個程序。。占空比要可調的,,
提供一種思路,程序沒時間寫。
1、PWM需要周期,因此定時器必須得設置匹配值,達到周期計數時間後復位TC值;
2、兩個PWM波形需要產生可調的PWM,那麼就需要讓定時器知道什麼時刻該讓這個IO口輸出高低電平。可以讓兩個輸出提供參數,比如數值是多少後出現高電平,高電平持續多長數值?
3、最後就是關鍵點了,即將定時器TC值(周期值)細化,比如我脈寬周期設定TC值是3000時候復位,那麼我可以將這個定時器定時300時候出現一次中斷,600時候中斷一次,900時候出現一次中斷,一次類推,這樣就可以得到很多的時間片段,即標志位COUNT。
4、我希望IO口在周期內出現可調節脈寬那麼可以實現了,比如COUNT==IO1的時候讓其出現高電平,持續多長時間後出現低電平(中斷裡面完成);
簡單的示意程序:
void TIMER_HANDLE(void)
{
//判斷是否達到TC值,如果達到則復位(COUNT清零),否則執行匹配中斷
//在原有基礎上設置匹配值中斷,匹配值 +=300;
COUNT++;
if((COUNT == IO1_H_TIME)) //現在正好是需要高電平的時刻,因此值置高
{
//持續時間開啟(自減),是否為0?
//不是0,那麼繼續輸出高電平
//是0,關閉輸出,同時清除高電平時刻
}
}
估計精度不怎麼好。
Ⅱ 單片機輸出PWM波IO口,可以直接接H橋驅動電路的輸入信號嗎
如果單片機輸出電壓合適,應該可以驅動9110,9110的兩個輸入都是TTL/CMOS兼容的,3.3V~5V的單片機都可以。
Ⅲ 單片機的數字埠、模擬埠和PWM口各是什麼意思,麻煩通俗點回答 謝謝
1、單片機的數字埠 是指 該埠只有通常的邏輯電平只有高電平或者低電平,用數字來表示高電平就是1,低電平就是0。以51單片機為例,如果說IO口P1.0為高電平,在硬體上說明單片機P1.0口為5V,軟體上讀回該IO口的值就為1.
2、模擬IO埠是指當前IO具備模擬電路功能,比如具有AD採集功能,可以採集外接電路的電壓。
3、PWM是指波形,具體來說就是方波,一般用於控制電機。