freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

觸摸屏控制實驗設(shè)計報告-文庫吧資料

2024-08-16 07:08本頁面
  

【正文】 別閾值、采樣時間、消除抖動開關(guān)、消除抖動時間等參數(shù),這些均由用戶根據(jù)自己的液晶屏以及精度要求來定制,也可以在應(yīng)用程序中用I/O控制函數(shù)ioctl()來設(shè)定,本文將在參數(shù)分析中具體分析這些參數(shù)的意義。整個軟件設(shè)計根據(jù)功能可以劃分為5個部分,分別是初始化、設(shè)備打開、讀操作、中斷處理以及I/O控制,下面具體介紹每一部分。 觸摸屏軟件流程如圖3所示。驅(qū)動程序主要設(shè)計思想是:驅(qū)動程序在初始化結(jié)束后,進(jìn)入空閑狀態(tài),等待中斷的到來。以觸摸屏為例: static struct file_operations ts_fops={ owner:THIS_MODULE, read:ts_read, //讀數(shù)據(jù)操作 poll:ts_poll, //非阻塞操作 ioctl:ts_ioctl, //I/O控制操作 open:ts_open, //打開設(shè)備 release:ts_release, //釋放設(shè)備 fasync:ts_fasync, //異步觸發(fā)} 完整的結(jié)構(gòu)還包括llseek、readdir等函數(shù)指針,只是由于在本程序中沒有用到,所以省略不寫,內(nèi)核把它們默認(rèn)為空(NULL)。這個數(shù)據(jù)結(jié)構(gòu)的每一項都指向驅(qū)動程序完成的一個功能。 向內(nèi)核注冊一個字符設(shè)備的函數(shù)為:externintregister_chrdev(unsignedintmajor,constchar*name, structfile_operations*fops);內(nèi)核用主設(shè)備號和次設(shè)備號惟一地標(biāo)識一個設(shè)備。 3 . 1 . 1 驅(qū)動程序在內(nèi)核的裝載方法 驅(qū)動程序在內(nèi)核中裝載的方式有兩種:一種是直接編譯進(jìn)內(nèi)核,在系統(tǒng)初始化的時候就對設(shè)備進(jìn)行注冊;一種是模塊化加載的方法,將驅(qū)動程序編譯成目標(biāo)文件(*.o),需要添加設(shè)備時,使用insmod命令向系統(tǒng)注冊,停止使用時,用rmmod命令卸載。設(shè)備驅(qū)動層屏蔽具體設(shè)備的細(xì)節(jié),文件系統(tǒng)層則向用戶提供一組統(tǒng)一的規(guī)范的用戶接口。寫驅(qū)動程序的任務(wù)之一就是完成file_operations中的函數(shù)指針μClinux繼承了Linux的設(shè)備管理方法,將所有的設(shè)備看做具體的文件,通過文件系統(tǒng)層對設(shè)備進(jìn)行訪問。內(nèi)核內(nèi)部通過file結(jié)構(gòu)識別設(shè)備,通過file_operations數(shù)據(jù)結(jié)構(gòu)提供文件系統(tǒng)的入口點函數(shù),也就是訪問設(shè)備驅(qū)動的函數(shù),結(jié)構(gòu)中的每一個成員都對應(yīng)著一個系統(tǒng)調(diào)用。圖2是一個設(shè)備驅(qū)動模塊動態(tài)掛接、卸載和系統(tǒng)調(diào)用的全過程。Linux操作系統(tǒng)通過系統(tǒng)調(diào)用和硬件中斷完成從用戶空間到內(nèi)核空間的控制轉(zhuǎn)移。應(yīng)用程序可以打開、關(guān)閉、讀寫這些設(shè)備文件,對設(shè)備的操作就像操作普通的數(shù)據(jù)文件一樣簡便。 第三章 觸摸屏控制器的軟件設(shè)計3 . 1 嵌入式Linux系統(tǒng)下的驅(qū)動程序設(shè)備驅(qū)動程序是Linux內(nèi)核的重要組成部分,控制了操作系統(tǒng)和硬件設(shè)備之間的交互。我也看到過有的驅(qū)動程序在屏幕被初始觸摸后會忽略掉N個讀數(shù)。 在每個轉(zhuǎn)換過程的前后,驅(qū)動程序必須檢查并確認(rèn)屏幕仍處于被觸摸狀態(tài)。我們一直這樣做,直到讀取的多個連續(xù)值處于defined定義的穩(wěn)定范圍內(nèi),此時我們可以調(diào)整該結(jié)果并向更高層軟件報告更新。 當(dāng)屏幕被觸摸時,我們需要對每個軸連續(xù)讀取多個轉(zhuǎn)換值以確定觸摸位置是否穩(wěn)定。當(dāng)產(chǎn)生PEN_DOWN中斷時,我們命令A(yù)DC序列器開始進(jìn)行轉(zhuǎn)換。在任何時候PegTouchTask總是先調(diào)用硬件配置例程,然后調(diào)用校準(zhǔn)例程,最后進(jìn)入等待觸摸輸入的無限循環(huán)中。任務(wù)的入口名叫PegTouchTask,因為驅(qū)動程序需要與PEG圖形軟件進(jìn)行交互操作。 2 . 4 . 3 正常操作 一旦校準(zhǔn)過程完成,我們就可以開始正常的操作,并開始向更高層軟件發(fā)送觸摸事件。對于更高的屏幕分辨率或其它觸摸屏,要產(chǎn)生一個精確的驅(qū)動程序這些點也許過多,也許不夠。本文提供的校準(zhǔn)例程用了四個數(shù)據(jù)點,即屏幕的每個角一個。如果你能在工廠做一次校準(zhǔn),那么得到大量采樣點并不是件難事。更糟的情況下,即使我們只改變X軸的觸摸位置,但從Y軸讀取的數(shù)據(jù)也會發(fā)生很大的變化。而在實際應(yīng)用中,因為許多電阻觸摸屏存在顯著的非線性,因此如果在最小和最大值之間簡單的插入位置數(shù)值會導(dǎo)致驅(qū)動程序非常的不精確。圖形目標(biāo)和用戶提示通過使用便攜式圖形用戶界面(PEG)圖形軟件API顯示在屏幕上,不過這也可以通過類似的圖形軟件實現(xiàn)。不過無論如何你仍然需要向用戶提供一種進(jìn)入校準(zhǔn)例程的途徑,從而在由于溫度漂移或其它因素造成校準(zhǔn)不準(zhǔn)確時進(jìn)行重新校準(zhǔn)。理想情況下校準(zhǔn)程序只要在產(chǎn)品初次加電測試過程中運(yùn)行一次就可以了,參考值被存儲在非易失性存儲器中。嵌入式系統(tǒng)包含折衷,你的任務(wù)就是想出最佳的折衷辦法,以產(chǎn)生能使用戶滿意的系統(tǒng)。智能化的外部觸摸控制器一般會以很快的速度讀取數(shù)十或數(shù)百個數(shù)據(jù)用以改善精度。 每個樣值所需的讀取次數(shù)、連續(xù)讀取間允許的偏差以及采樣速率是每個驅(qū)動程序的全部可編程參數(shù)。因此需要通過實驗來確定適合自己系統(tǒng)的最佳值。對于在簽名輸入期間發(fā)生的滑動或筆劃跟蹤事件來說快速拖曳是非常重要的。 這里不可避免要進(jìn)行折衷考慮。當(dāng)EOS(序列結(jié)束)中斷產(chǎn)生時,我們獲得的結(jié)果就可以用于采集和檢查了。當(dāng)該中斷產(chǎn)生時,會有12個原始的模數(shù)轉(zhuǎn)換數(shù)據(jù)等待處理,分別對應(yīng)于X軸的6次讀數(shù)和Y軸的6次讀數(shù)。 我們可以通過編程讓處理器在FIFO存有任何有效數(shù)據(jù)時就產(chǎn)生中斷,或在輸入FIFO裝滿時產(chǎn)生中斷。 兩種CPU都需要這種時延,因為電阻觸摸面板是二塊由薄絕緣層隔離的大面積導(dǎo)體,正好形成一個電容。飛思卡爾把這段時延稱作數(shù)據(jù)建立計數(shù)(DSCNT),在兩層切換后會有很多個ASP輸入時鐘長度的延時。該過程的要點是: 1 、檢查屏幕是否被觸摸; 2 、采集每個軸上的多個原始讀數(shù)用于以后的過濾; 3 、檢查屏幕是否仍在被觸摸。 2 . 4 . 1 讀取觸摸數(shù)據(jù) 在校準(zhǔn)和正常操作期間,我們需要讀取X和Y軸的原始數(shù)據(jù)并去抖動,然后確定屏幕被觸摸時是否有穩(wěn)定的讀數(shù)。這樣做可以讓驅(qū)動程序在屏幕沒有被觸摸時中斷自己的執(zhí)行,而不消耗任何CPU資源,而一旦用戶觸摸屏幕,驅(qū)動程序就被喚醒并進(jìn)入轉(zhuǎn)換模式。該事件可以在驅(qū)動程序內(nèi)部連接到名為PEN_OWN IRQ的中斷發(fā)生機(jī)制。 當(dāng)控制器處于觸摸檢測模式時,Y軸觸摸層通過一個上拉電阻上拉到高電平,X軸觸摸層則連接到地。上述兩個控制器都提供了屏幕是否被觸摸的檢測機(jī)制,并且當(dāng)觸摸事件發(fā)生時還可選擇是否中斷主處理器。理解如何對LH79524 ADC序列器控制單元編程可能是一個挑戰(zhàn),不過利用夏普()公司提供的應(yīng)用指南可 一旦完成了基本的硬件設(shè)置,接下來就需要一種可靠的方法判斷屏幕是否被觸摸了。 LH79524 ADC本身是一個令人稱奇的電路系統(tǒng),能夠?qū)崿F(xiàn)完全可編程的狀態(tài)機(jī)和序列器。這樣就能讓驅(qū)動程序?qū)斎朐紨?shù)據(jù)進(jìn)行充分的去抖動和過濾,并仍能向高層用戶接口軟件提供20Hz的實際位置更以使這項工作簡單很多。在向更高層軟件發(fā)送位置更新數(shù)據(jù)之前,驅(qū)動程序需要多次采樣每個軸上的輸入。電阻觸摸屏,特別是便宜的那種,一般會有很大的噪聲和抖動。20Hz的更新速度聽起來并不是太有挑戰(zhàn)性,但提供20Hz的更新速度實際上要求采樣速度接近200Hz,具體數(shù)值取決于我們在確定輸入穩(wěn)定之前準(zhǔn)備采用多少讀數(shù)。 根據(jù)我的經(jīng)驗,觸摸屏至少需要以20Hz或50ms間隔的速度向更高層軟件提供位置更新數(shù)據(jù),只要高層軟件跟得上,速度越快越好,我們不太擔(dān)心功耗問題。采樣速度會影響我們需要如何配置時鐘來驅(qū)動觸摸屏和ADC。讀者會發(fā)現(xiàn)對于每一個支持的RTOS都有被(ifdef)限定的代碼段。根據(jù)你的總體系統(tǒng)需求,查詢也可能是一個值得考慮的合理的設(shè)計方式。如果使用的是RTOS,并且所有任務(wù)經(jīng)常為了等待某類外部事件而被中斷,處理器經(jīng)常處于空閑的循環(huán)狀態(tài),沒有什么有意義的事做。回答是這是嵌入式系統(tǒng),我們不做任何輪詢。 之所以這樣說只是因為輪詢對嵌入式系統(tǒng)程序員來說似乎變成了貶義詞。坦率地講,我之所以這樣做是因為使用中斷很有趣。這一過程是由每個驅(qū)動程序中的TouchConfigureHardware()函數(shù)完成的。總的來看,軟件提供的功能完成以下這些步驟: 1. 配置控制器硬件 2. 判斷屏幕是否被觸摸 3. 獲得穩(wěn)定的、去抖動的位置測量數(shù)據(jù) 4. 校準(zhǔn)觸摸屏 5. 將觸摸狀態(tài)和位置變化信息發(fā)送給更高層的圖形軟件 2 . 4 硬件配置 觸摸驅(qū)動程序要做的第一件事是配置硬件。 本文中不提供每個驅(qū)動程序的詳細(xì)代碼,而是介紹驅(qū)動程序的設(shè)計和流程,并重點介紹其中的重要部分。這塊夏普的參考板以及集成的顯示和觸摸套件都可以從LogicPD公司處定購。評估套件包括QVGA(240x320)彩色LCD和觸摸屏。 2 . 3 基于兩種CPU的參考板 第一塊板是飛思卡爾的MX9823ADS評估板,采用了飛思卡爾的MC9328MX1處理器。該器件為12位的模數(shù)轉(zhuǎn)換器,其內(nèi)嵌的邏輯電路通過交替給一個薄層加電,再從另外一層轉(zhuǎn)換來控制觸摸屏。Burr Brown NS7843或NS7846就是這種ADC控圖2:觸摸屏電路簡單等效電路。將電阻觸摸屏產(chǎn)生的電壓轉(zhuǎn)換成數(shù)字需要用到模數(shù)轉(zhuǎn)換器(ADC)。軟件必須先讀一個軸,然后再讀另外一個軸。注意必須獲取二個完全獨立的讀
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1