脈沖電源脈沖序列產(chǎn)生的一種方法
介紹一種利用8253芯片產(chǎn)生可變的脈沖序列的方法。在該方法中,通過軟件編程使8253的2個(gè)計(jì)數(shù)通道分別工作在方式1和方式2,產(chǎn)生脈寬、脈間寬度可變的脈沖序列。
關(guān)鍵詞:電源;微機(jī)控制;脈沖
A Method to Generate Programmable Pulse Sequence of Pulse Power Supply
ZHAO Jianfeng
(Xiamen Aeronautics Co., Xiamen 361006, China)
Key words: power supply; microcomputer control; pulse
8253可編程計(jì)數(shù)器/定時(shí)器的工作頻率為0~2MHz,它有3個(gè)獨(dú)立編程的計(jì)數(shù)器,每個(gè)計(jì)數(shù)器有三個(gè)引腳,分別為時(shí)鐘CLK、門控GATE、計(jì)數(shù)器和計(jì)時(shí)結(jié)束輸出OUT;每個(gè)計(jì)數(shù)器分別有6種工作方式。下面針對使用到的兩種工作方式——方式1和方式2的工作原理[1]進(jìn)行簡述。
方式1:可編程單穩(wěn),即由外部硬件產(chǎn)生的門控信號GATE觸發(fā)8253而輸出單穩(wěn)脈沖。計(jì)數(shù)器裝入計(jì)數(shù)初值后,在門控信號GATE由低電平變高電平并保持時(shí),計(jì)數(shù)器開始計(jì)數(shù),此時(shí)輸出端變成低電平并開始單穩(wěn)過程。當(dāng)計(jì)數(shù)結(jié)束時(shí),輸出端OUT轉(zhuǎn)變成高電平,單穩(wěn)過程結(jié)束,在OUT端輸出一個(gè)單穩(wěn)脈沖。硬件再次觸發(fā),OUT端可再次輸出一個(gè)同樣的單穩(wěn)脈沖。單穩(wěn)脈沖的寬度由裝入計(jì)數(shù)器的計(jì)數(shù)初值決定。在WR信號的上升沿(CPU寫控制字之后),輸出端OUT保持高電平(若OUT原為低電平則變?yōu)楦唠娖?。CPU寫入計(jì)數(shù)值后,計(jì)數(shù)器并不馬上開始計(jì)數(shù),而要等到門控信號GATE啟動(dòng)之后的下一個(gè)CLK的下降沿才開始。在整個(gè)計(jì)數(shù)過程中,輸出端OUT保持低電平,直至計(jì)數(shù)值至0,OUT變?yōu)楦唠娖綖橹埂?BR> 方式2:速率發(fā)生器,其功能如同一個(gè)N分頻計(jì)數(shù)器。其輸出是將輸入時(shí)鐘按照N計(jì)數(shù)值分頻后得到的一個(gè)連續(xù)脈沖。在該方式下,當(dāng)計(jì)數(shù)器裝入初始值開始工作后,輸出端OUT將不斷地輸出負(fù)脈沖,其寬度為一個(gè)時(shí)鐘周期的時(shí)間,而兩個(gè)負(fù)脈沖間的時(shí)間脈沖個(gè)數(shù)等于計(jì)數(shù)器裝入的計(jì)數(shù)初值。若計(jì)數(shù)初值為N,則每N個(gè)輸入脈沖輸出一個(gè)脈沖。當(dāng)CPU寫完控制字后,輸出端OUT轉(zhuǎn)變成高電平,計(jì)數(shù)器將立即自動(dòng)開始對輸入CLK時(shí)鐘計(jì)數(shù)。在計(jì)數(shù)過程中,OUT端始終保持高電平,直至計(jì)數(shù)器的計(jì)數(shù)值減到1時(shí),OUT端才變?yōu)榈碗娖?,其保持的寬度為一個(gè)輸入CLK時(shí)鐘周期的時(shí)間,然后輸出端OUT恢復(fù)高電平,計(jì)數(shù)器重新開始計(jì)數(shù)。
方式1:可編程單穩(wěn),即由外部硬件產(chǎn)生的門控信號GATE觸發(fā)8253而輸出單穩(wěn)脈沖。計(jì)數(shù)器裝入計(jì)數(shù)初值后,在門控信號GATE由低電平變高電平并保持時(shí),計(jì)數(shù)器開始計(jì)數(shù),此時(shí)輸出端變成低電平并開始單穩(wěn)過程。當(dāng)計(jì)數(shù)結(jié)束時(shí),輸出端OUT轉(zhuǎn)變成高電平,單穩(wěn)過程結(jié)束,在OUT端輸出一個(gè)單穩(wěn)脈沖。硬件再次觸發(fā),OUT端可再次輸出一個(gè)同樣的單穩(wěn)脈沖。單穩(wěn)脈沖的寬度由裝入計(jì)數(shù)器的計(jì)數(shù)初值決定。在WR信號的上升沿(CPU寫控制字之后),輸出端OUT保持高電平(若OUT原為低電平則變?yōu)楦唠娖?。CPU寫入計(jì)數(shù)值后,計(jì)數(shù)器并不馬上開始計(jì)數(shù),而要等到門控信號GATE啟動(dòng)之后的下一個(gè)CLK的下降沿才開始。在整個(gè)計(jì)數(shù)過程中,輸出端OUT保持低電平,直至計(jì)數(shù)值至0,OUT變?yōu)楦唠娖綖橹埂?BR> 方式2:速率發(fā)生器,其功能如同一個(gè)N分頻計(jì)數(shù)器。其輸出是將輸入時(shí)鐘按照N計(jì)數(shù)值分頻后得到的一個(gè)連續(xù)脈沖。在該方式下,當(dāng)計(jì)數(shù)器裝入初始值開始工作后,輸出端OUT將不斷地輸出負(fù)脈沖,其寬度為一個(gè)時(shí)鐘周期的時(shí)間,而兩個(gè)負(fù)脈沖間的時(shí)間脈沖個(gè)數(shù)等于計(jì)數(shù)器裝入的計(jì)數(shù)初值。若計(jì)數(shù)初值為N,則每N個(gè)輸入脈沖輸出一個(gè)脈沖。當(dāng)CPU寫完控制字后,輸出端OUT轉(zhuǎn)變成高電平,計(jì)數(shù)器將立即自動(dòng)開始對輸入CLK時(shí)鐘計(jì)數(shù)。在計(jì)數(shù)過程中,OUT端始終保持高電平,直至計(jì)數(shù)器的計(jì)數(shù)值減到1時(shí),OUT端才變?yōu)榈碗娖?,其保持的寬度為一個(gè)輸入CLK時(shí)鐘周期的時(shí)間,然后輸出端OUT恢復(fù)高電平,計(jì)數(shù)器重新開始計(jì)數(shù)。
其中:SC1 SC0為計(jì)數(shù)器選擇位;RL1 RL0為計(jì)數(shù)器讀寫操作選擇位,以確定計(jì)數(shù)器進(jìn)行裝入或讀出是單字節(jié)還是雙字節(jié);M2 M1 M0為計(jì)數(shù)器工作方式選擇位;BCD表示計(jì)數(shù)器計(jì)數(shù)方式選擇位。
在實(shí)現(xiàn)過程中,讓計(jì)數(shù)器0工作于速率發(fā)生器方式(方式2),計(jì)數(shù)器1工作于可編程單穩(wěn)方式(方式1)。假設(shè)提供給8253的時(shí)鐘周期為T,所需脈寬寬度Ti是Ni個(gè)時(shí)鐘周期的寬度,即Ti=Ni×T;所需脈間寬度T0是N0個(gè)時(shí)鐘周期的寬度,即T0=N0×T。如圖2所示。
由于每個(gè)計(jì)數(shù)器中的計(jì)數(shù)寄存器為16位,因而該脈沖序列周期最大為65535個(gè)時(shí)鐘周期。如以1MHz時(shí)鐘頻率計(jì),則最大脈沖信號周期為65535μs,即65.535ms,對于脈沖周期要求更長的可采用二級級聯(lián)方式,詳細(xì)可參考有關(guān)書籍,限于篇幅,本文不作介紹。在實(shí)際應(yīng)用中,通過改變提供給8253的時(shí)鐘信號和改變計(jì)數(shù)器的計(jì)數(shù)值可分別控制脈寬和脈間寬度,具有很強(qiáng)的靈活性。
8253脈沖信號產(chǎn)生電路的連接如圖3。
本文中時(shí)鐘頻率為1MHz,周期T為1μs。計(jì)數(shù)器0的口地址為300H,計(jì)數(shù)器1的口地址為301H,8253控制寄存器的口地址為303H。
下面以產(chǎn)生脈寬寬度Ti為2μs(Ni=2)、脈間寬度T0為6μs(N0=6)的脈沖信號為例介紹軟件編程方法。
根據(jù)上述要求,計(jì)數(shù)器0的控制字為14H(方式2、單字節(jié)、十六進(jìn)制計(jì)數(shù)方式),計(jì)數(shù)器1的控制字為52H(方式1、單字節(jié)、十六進(jìn)制計(jì)數(shù)方式)。
5試驗(yàn)結(jié)果
按照上述參數(shù)設(shè)置,從計(jì)數(shù)器1輸出的脈沖序列如圖4。
根據(jù)上述要求,計(jì)數(shù)器0的控制字為14H(方式2、單字節(jié)、十六進(jìn)制計(jì)數(shù)方式),計(jì)數(shù)器1的控制字為52H(方式1、單字節(jié)、十六進(jìn)制計(jì)數(shù)方式)。
5試驗(yàn)結(jié)果
按照上述參數(shù)設(shè)置,從計(jì)數(shù)器1輸出的脈沖序列如圖4。
評論