USB接口的多功能容柵傳感器測量系統(tǒng)
3.2 USB程序
因?yàn)镃8051F321的USB模塊高度集成化,所以對USB接口的設(shè)計(jì)主要是USB固件程序的設(shè)計(jì)。其中最重要的是USB描述符和USB傳輸中斷的處理。當(dāng)USB中斷到達(dá)時,C8051F321首先讀取3個中斷寄存器(CMINT、IN1INT和OUT1INT)來判斷中斷來源(USB復(fù)位中斷、端點(diǎn)0中斷、端點(diǎn)1輸入中斷、端點(diǎn)2輸出中斷),然后跳入相應(yīng)的處理模塊進(jìn)行處理。USB中斷程序流程如圖4所示。本文引用地址:http://www.ex-cimer.com/article/161402.htm
端點(diǎn)0主要用于主機(jī)對USB設(shè)備的配置、狀態(tài)信息的獲取和設(shè)備錯誤的糾正等,它的中斷處理模塊由控制輸出和控制輸入2部分組成。每次傳輸由設(shè)置事務(wù)開始,然后根據(jù)設(shè)置事務(wù)數(shù)據(jù)包中的USB標(biāo)準(zhǔn)命令請求判斷該次傳輸是控制輸入還是控制輸出。USB復(fù)位中斷將相關(guān)USB變量、寄存器和各端點(diǎn)的狀態(tài)恢復(fù)為初始狀態(tài)。端點(diǎn)1輸入中斷和端點(diǎn)2輸出中斷均為批量傳輸中斷,其主要作用是在收到中斷時,在各自預(yù)定義好的緩沖區(qū)中寫入要傳輸給主機(jī)的數(shù)據(jù)或讀取傳輸過來的數(shù)據(jù)。
3.3 主程序
系統(tǒng)程序主要包括主程序、時鐘初始化子程序、端口初始化子程序、USB控制器配置初始化子程序、延時子程序、采集數(shù)據(jù)中斷子程序、USB中斷子程序和附加功能子程序。由于采集數(shù)據(jù)實(shí)時性要求比較高,所以將采集數(shù)據(jù)中斷設(shè)為高優(yōu)先級。
附加功能子程序包括正常計(jì)數(shù)、數(shù)據(jù)保持、最大值跟蹤、最小值跟蹤和清零的功能。對附加功能的實(shí)現(xiàn)均是通過控制CK和DATA信號線完成,附加功能轉(zhuǎn)換流程如圖5所示。給CK信號線一個負(fù)脈沖,即可完成清零操作;在正常計(jì)數(shù)狀態(tài)下將DATA信號線置為高電平,容柵傳感器將進(jìn)入保數(shù)功能;如果再將CK信號線置為低電平,容柵傳感器進(jìn)入最大值跟蹤功能;內(nèi)部專用芯片將用新測得的數(shù)據(jù)與上一個數(shù)據(jù)進(jìn)行比較,如果新測得數(shù)據(jù)大,則替換掉,否則丟棄??梢栽谏衔粰C(jī)上通過USB測試軟件發(fā)送相關(guān)命令來控制系統(tǒng)進(jìn)行操作。程序中設(shè)定一個字節(jié)的變量來存放從上位機(jī)接收到的命令,當(dāng)判斷是其中的一個命令時就調(diào)用相應(yīng)的處理程序完成操作。
3.4 軟件抗干擾
環(huán)境的干擾使單片機(jī)程序很容易“跑飛”,為了控制程序正常運(yùn)行,除了硬件上使用光耦隔離技術(shù)之外,軟件上可采用設(shè)置“軟件陷阱”的辦法來將跑飛的程序拉入正常軌道,即在程序代碼空間使用跳轉(zhuǎn)指令將跑飛的程序拉到程序執(zhí)行的開始位置,具體操作方法是在所有未被使用的代碼空間處寫入“LJMP 0000H”指令。另外,可利用單片機(jī)自帶的“看門狗”功能看住程序,一旦程序跑飛,看門狗將強(qiáng)制單片機(jī)復(fù)位。也就是說,在程序代碼中每隔一定時間就設(shè)置一個“喂狗指令”,清除看門狗計(jì)時器值,不讓其達(dá)到最大值而發(fā)出復(fù)位信號。
結(jié)語
使用主機(jī)上的軟件測試出該系統(tǒng)軟硬件能夠穩(wěn)定可靠地運(yùn)行,點(diǎn)擊測試軟件的相關(guān)功能按鈕,容柵傳感器能夠完成相應(yīng)的功能操作。與傳統(tǒng)的RS232/RS485通信方式相比較,該方案解決了不帶串行通信方式的上位機(jī)的通信閑難,抗干擾能力更強(qiáng),為系統(tǒng)提供更穩(wěn)定的電源,適用于惡劣環(huán)境下的工業(yè)現(xiàn)場的高精度測量。
接地電阻相關(guān)文章:接地電阻測試方法
電機(jī)保護(hù)器相關(guān)文章:電機(jī)保護(hù)器原理
評論