基于μC/OS-II嵌入式操作系統(tǒng)的TCSC實驗控制器前置單元設(shè)計
中斷服務(wù)程序( ISR)的設(shè)計
AD采樣和晶閘管觸發(fā)這兩項功能由中斷服務(wù)程序( ISR)來完成。根據(jù)μC /OS-Ⅱ要求, ISR開始時需調(diào)用OSIntEnter ( )函數(shù)通知μC /OS-Ⅱ系統(tǒng)進入了ISR,ISR結(jié)束時需調(diào)用OSIntExit ( )函數(shù)通知μC /OS-Ⅱ進行進程調(diào)度。
AD采樣模塊有3 個ISR,分別是: 定時器4 ISR(產(chǎn)生周期性的采樣保持信號) ,定時器5 ISR (產(chǎn)生16μs的延遲,以符合S3C44B0X的多路選擇器對切換時間的要求) ,AD ISR (讀取AD采樣結(jié)果,并進行相應(yīng)的操作)。系統(tǒng)必須在兩次Timer4中斷之間完成6次AD采樣工作。晶閘管觸發(fā)模塊有3組、每組2個ISR。每組的2個ISR分別為一個過零檢測ISR和一個定時器ISR,共同控制一相的晶閘管觸發(fā)。
μC /OS-II任務(wù)設(shè)計
前置單元通過PD IUSBD12 的Endpoint1 ( PacketSize = 16 B )接受上位機的命令,返回命令的執(zhí)行狀態(tài),通過PD IUSBD12的Endpoint2 ( Packet Size = 64 B)返回AD 采樣的結(jié)果。 這通過兩個函數(shù)TaskUsbEp1RxDone和TaskUsbEp2SendData 可以實現(xiàn), 同時通過TaskUsbSetupPacket函數(shù)來處理主機發(fā)來的請求。我們設(shè)置PD IUSBD12 的Endpoint1 ( Generic Endpoint) 工作在Interrup t 模式, Endpoint2 (Main Endpoint)工作在Bulk模式,則:
1) TaskUsbEp1RxDone
TaskUsbEp1RxDone為前置機接受上位機采樣或置觸發(fā)角的任務(wù),其工作流程下所示。
先用OSSemPend ( )等待上位機發(fā)送命令,若上位機發(fā)來的COMM_START_AD命令,則:
若TOTAL _ SAMPLE _ TIMES! = 0, 則通過Endpoint1返回錯誤信息給上位機,否則置AD_BUFF_P =0, TOTAL _ SAMPLE _ TIMES =所需采樣的周期數(shù)×100,開啟Timer4 (采樣保持定時器) ,通過Endpoint1返回成功信息給上位機。
若上位機發(fā)來的是COMM _SET_ANGLE命令則設(shè)置相應(yīng)的X_ANGLE變量,能過Endpoint1返回成功信息給上位機。
2) TaskUsbEp2SendData
TaskUsbEp2SendData任務(wù)的工作次序為先等待AD ISR發(fā)送要求傳送數(shù)據(jù)的消息,消息發(fā)出后,在等待上次USB傳送結(jié)束,再通過Endpoint2發(fā)送緩沖區(qū)中的數(shù)據(jù)。
3) TaskUsbSetupPacket
TaskUsbSetupPacket任務(wù)工作次序為先等待SetupPacket事件,事件發(fā)生后再調(diào)用UsbControlHandler( )函數(shù)處理主機的請求。
軟件整體結(jié)構(gòu)
整體軟件結(jié)構(gòu)框圖如圖4所示(圖中矩形框代表中斷服務(wù)程序ISR,橢圓代表μC /OS-Ⅱ任務(wù)虛線框代表μC /OS-Ⅱ信號量或消息隊列)。
結(jié) 論
實驗結(jié)果表明,實際系統(tǒng)數(shù)據(jù)采集速度與設(shè)計時預(yù)期的結(jié)果基本一致,印證了現(xiàn)階段結(jié)合數(shù)據(jù)采集、AD轉(zhuǎn)換、數(shù)據(jù)傳輸及其它功能模塊如過零檢測、觸發(fā)可控硅等諸多任務(wù)于一體的復(fù)雜系統(tǒng),必須有功能強大的硬件資源平臺做支撐;在多任務(wù)、實時性較強的場合,嵌入式實時操作系統(tǒng)是必不可少的;在數(shù)據(jù)傳輸方面,USB在速度方面的優(yōu)勢比傳統(tǒng)的RS232更能滿足TCSC實時控制的要求。
參考文獻:
[1].RS232datasheethttp://www.dzsc.com/datasheet/RS232_585128.html.
[2].S3C44B0Xdatasheethttp://www.dzsc.com/datasheet/S3C44B0X_5892.html.
[3].74HC14datasheethttp://www.dzsc.com/datasheet/74HC14_99158.html.
[4].TTLdatasheethttp://www.dzsc.com/datasheet/TTL_1174409.html.
[5].LF398datasheethttp://www.dzsc.com/datasheet/LF398_842703.html.
[6].74LS04datasheethttp://www.dzsc.com/datasheet/74LS04_772886.html.
[7].Bulkdatasheethttp://www.dzsc.com/datasheet/Bulk_2523104.html.
評論