基于DSP芯片TMS320F240的步進(jìn)電機調焦系統設計
F240初始化后,計時(shí)器的基本計時(shí)時(shí)間為0.1?s,考慮到F240定時(shí)器是16位計數器,這難以滿(mǎn)足計算長(cháng)時(shí)間的需求,所以采用通 過(guò)計算進(jìn)入定時(shí)器中斷的次數來(lái)計算長(cháng)時(shí)間的方法。例如設置定時(shí)器周期寄存器值為800即*T1PR=800,那么進(jìn)一次定時(shí)器中斷時(shí)間為800*0.1= 80?s如果計時(shí)為1s的話(huà),則只需進(jìn)12500次中斷即可,以此類(lèi)推;故定義的數組內容表示如下:
int table[ ]= { 25,800,255, //第1行
. . . . . . } //第n行
其中25為電機步數;800為定時(shí)器周期寄存器值;255每?jì)刹介g所要進(jìn)入定時(shí)器中斷的次數。實(shí)現準確地控制步進(jìn)電機控制器關(guān)鍵在于由F240 I/O口產(chǎn)生規定的脈沖信號,提供給步進(jìn)電機控制器從而驅動(dòng)步進(jìn)電機正確轉動(dòng),程序中包括F240初始化、電機正轉、等待、電機反轉幾個(gè)程序模塊。程序流 程圖如圖2所示:
圖2 程序流程圖
以下是實(shí)現電機正轉的程序。程序中變量解釋?zhuān)簊tep:用于存儲數組中電機步數;every step:用于存儲數組中每?jì)刹介g所要進(jìn)定時(shí)中斷的次數;flag:數組行數標志(程序假設需正轉36組)。
void interrupt INT2_ISR()
{ while (*EVIVRA==0x0027) //是否是定時(shí)器中斷
{ if(flag36) //用來(lái)完成正轉
{
if (steptotal==step) //是否走完數組每行規定的步數
評論