基于ATmegal28的電機控制系統(tǒng)設計
5)16位定時器/計時器 16位的T/C可以實現(xiàn)精確的程序定時、波形產生和信號測量。T/Cl、T/C3的普通模式、CTC模式、快速PWM模式、相位修正PWM模式與T/C0、T/C2相同。
本文引用地址:http://2s4d.com/article/248472.htm2 系統(tǒng)軟件設計
嵌入式電機控制系統(tǒng)在軟件設計上分為主機軟件設計與從機軟件設計。主機軟件設計主要分為主機的SPI驅動程序和主機通信程序。
從程序結構角度而言,設備驅動程序是一組由內核中的相關子例程和數(shù)據(jù)組成的I/O設備軟件接口,它的任務就是向系統(tǒng)提供接口函數(shù)。因此每種文件系統(tǒng)或設備都有自己的接口函數(shù),這個函數(shù)就是一個fileoperations數(shù)據(jù)結構,結構中的成份幾乎全是函數(shù)指針。當內核需要對某個設備進行特殊的操作時,它就調用相應的接口函數(shù)即驅動例程。這就使得控制從用戶進程轉移到了驅動例程,當驅動例程完成控制又返回至用戶進程。用戶態(tài)的程序使用內核提供的標準系統(tǒng)調用來與內核通訊,當每個系統(tǒng)調用被使用時,內核就轉到相應的設備驅動例程來操縱。
調用基本接口函數(shù)都需要驅動程序的fileoperations結構成員指向open(),read(),write(),release()等函數(shù),實現(xiàn)了xxx_fops結構體內的各個入口點函數(shù)后,編寫設備驅動程序初始化函數(shù),并在內核啟動時注冊此函數(shù),完成硬件設備的初始化設置。初始化程序片斷如下:
voidinitexxxdevice(viod){
/檢查硬件設備是否存在,如果存在進行硬件設備內部寄存器初始化
if(result=registerchrdev(254,"xxxdevice",&xxxefops))
printk("Error:%dinitxxx_device()can'tgetMajorln",result);
}
設備初始化函數(shù)中調用函數(shù)registerchrdev()來完成注冊字符,函數(shù)形式如下:
intregisterchrdev(unsignedintmajor,constchar*name,structfileoperations*fop);
fops是指向實現(xiàn)的fileoperations結構體的操作指針。根據(jù)這些參數(shù),采用如下命令,在/dev下創(chuàng)建該設備文件名。
mknod/dev/xxxdevicec2540。
3 結束語
該系統(tǒng)設計是對嵌入式技術與理論的拓展和應用,是對NETCON網(wǎng)絡化控制系統(tǒng)的升級與改進,實現(xiàn)了對電機控制系統(tǒng)實時監(jiān)控多路電機的狀態(tài),并且可以控制任一路電機的轉速與相位。實現(xiàn)了單片機與ARM系列處理器之間的通信,解決了利用ARM處理器實現(xiàn)電機控制CPU工作效率低的問題。該方案經過測試應用效果良好,大大提高了CPU的工作效率。但電機的測速精度還有待進一步提高,PWM調速范圍有待進一步加大,還需進一步優(yōu)化程序,提高整個系統(tǒng)的實時性。
光耦相關文章:光耦原理
存儲器相關文章:存儲器原理
評論