8052同時輸出16個PWM.... |
缺席
|
kun_tien
一般會員 發表:10 回覆:2 積分:2 註冊:2005-09-14 發送簡訊給我 |
使用AT89C52,要控制16顆伺服馬達,故需要16組PWM,而以下程式為同時控制8個伺服馬達的PWM訊號~~
每顆馬達所需要的控制訊號,從(1500-800)us ~ (1500+800)us,可以另馬達從0~180度轉動,而我需造出如兩組下面的訊號:
#include |
kun_tien
一般會員 發表:10 回覆:2 積分:2 註冊:2005-09-14 發送簡訊給我 |
以上是我C51的程式,原理是利用兩個TIMER送出PWM訊號,TIMER1做出DUTY CYCLE最大的訊號,再利用TIMER0計時中斷的方式,在TIMER1還沒有計數溢位時TIMER0先溢位中斷並送給P1的某一個BIT為零,連續中斷七次,令TR0=0,停止中斷,此時而PORT1已有7個BIT為零了,最後一個BIT就是靠TIMRT1的計數溢位給定P1=0X00,
以此方式達到製造八個PWM。
而現在我遇到是TIMER0溢位中斷掉到中斷副程式時與其在中斷副程式裡面所花掉的時間太長(約有243個計數次數)而使的無法隨我程式中index[]的順序給定P1_index[]=0,可能只中斷了四次,給了四個BIT為零,TIMER1就計數溢位了,這就是我的問題了??請各位前輩我幫我看看~~是否有其他方法或是需要怎樣改進???
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |