娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

mini2440上連接的是一個電阻式觸摸屏,電阻式觸摸屏是基于AD轉換實現的,即某個位置按下之后,這點的電壓會發生改變,通過電壓就可以判斷出是哪一個點被按下了,arm可以得到這個點的坐標。因為觸摸屏和lcd是兩個設備,因此,觸摸屏得到的坐標一般不能夠與lcd上的坐標對應起來,所以需要我們在程序中手動的進行校正(雖然不對應,但是他們之間的關系式線性的,因此通過三個點的采樣,就可以把系數確定下來。)


s3c2440是不支持中斷嵌套的。


arm與觸摸屏通過tsxptsxm  tsyptsym 四根線相連接,數據手冊中有一句話:When Touch Screen device is used; XM or PM is only connected ground for Touch Screen I/F.s3c2440一共有4種觸摸屏接口模式,其中,自動(連續)XY坐標轉換模式和等待中斷模式是我們用到的。


(1)等待中斷模式是在觸筆落下時產生一個中斷,在這種模式下,A/D觸摸屏控制寄存器ADCTSC的值應為0xD3,在系統響應中斷后,XY坐標的測量模式必須為無操作模式,即寄存器ADCTSC的低兩位必須清零。


(2)自動(連續)XY坐標轉換模式是系統依次轉換觸點的X軸坐標和Y軸坐標,其中X軸坐標值寫入寄存器ADCDAT0的低10位中,Y軸坐標寫入寄存器ADCDAT1的低10位中,在這種模式下,系統同樣會產生中斷信號。


在一般情況下,為實現觸摸屏功能,先是設置為等待中斷模式,在產生int_tc中斷后,在中斷函數中再設置為自動(連續)XY坐標轉換模式,依次讀取觸點的坐標值。


與觸摸屏的功能實現相關的有兩個中斷:int_adc和int_tc,這兩個中斷源屬于subinterrupt source,都屬于int_adc,因此在配置中斷的時候就需要按照sub中斷源的配置方法進行配置。其中,int_tc是在觸摸屏被按下或被釋放時產生,一個時刻只能檢測其中一種事件,具體是檢測觸摸屏按下還是釋放,需要我們在寄存器ADCTSC的第8位能夠設置。int_adc是在ad轉換完成之后產生的。


寄存器ADCTSC的第3位可以選擇上拉電阻的使能,在等待中斷模式下,上拉電阻要有效,在觸發中斷后,上拉電阻要無效。寄存器ADCTSC的第2位用于選擇自動(連續)XY坐標轉換模式。觸筆抬起/落下中斷狀態寄存器ADCUPDN的低2位能夠判斷觸筆在何種狀態下引起的中斷。A/D延時寄存器ADCDLY可以設置開始中斷到真正開始A/D轉換這段時間的延時長度,它的時鐘源頻率為3.68MHz。


實現觸摸屏功能的流程是這樣的:


1. 設置觸摸屏為等待中斷模式,配置ADCTSC為檢測觸摸屏被按下 產生中斷。


2. 產生中斷后,證明觸摸屏被按下。在中斷函數中修改ADCTSC和ADCCON,配置觸摸屏為連續轉換功能。同時要屏蔽int_adc中斷。因為我們是在中斷函數中,所以,通過while循環檢測srcpnd 和 subsrcpnd寄存器來檢測是否產生了adc轉換完成的中斷。也就是屏蔽中斷,但是通過檢測是否產生中斷,來判斷adc轉換是否完成。


3. adc轉換結束后,提取想要的數據。然后配置ADCSTC為檢測觸摸屏被釋放產生中斷,同時也要繼續屏蔽中斷。通過檢測srcpnd和subsrcpnd來判斷是否產生了觸摸屏被釋放的中斷。當檢測到觸摸屏被釋放后,結束中斷函數。


當然,采用其他方法來實現我覺也是可以的,比如說檢測到觸摸屏被按下后,就結束中斷函數。也就是把上面的三個步驟,分別在三個中斷函數中實現,也是可行的。



此外,涉及到觸摸屏的校正,轉載趙老師的方法如下:


比較常見的校正方法是三點校正法,它的原理是:


       設LCD上每個點PD的坐標為[XD,YD],觸摸屏上每個點PT的坐標為[XT,YT]。要實現觸摸屏上的坐標轉換為LCD上的坐標,需要下列公式進行轉換:


XD=A×XT+B×YT+C


YD=D×XT+E×YT+F


因為其中一共有六個參數(A,B,C,D,E,F),因此只需要三個取樣點就可以求得這六個參數。這六個參數一旦確定下來,只要給出任意觸摸屏上的坐標點PT,代入這個公式,就可以得到它所對應的LCD上像素點的坐標PD。具體的求解過程就不細講,只給出最終的結果。已知LCD上的三個取樣點為:PD0,PD1,PD2,它們所對應的觸摸屏上的三個點為:PT0,PT1,PT2。A,B,C,D,E,F這六個參數最終的結果都是一個分式,而且都有一個共同的分母,為:


K=(XT0-XT2)×(YT1-YT2)-(XT1-XT2)×(YT0-YT2)


那么這六個參數分別為:


              A=[(XD0-XD2)×(YT1-YT2)-(XD1-XD2)×(YT0-YT2)] / K


              B=[(XT0-XT2)×(XD1-XD2)-(XD0-XD2)×(XT1-XT2)] / K


              C=[YT0×(XT2×XD1-XT1×XD2)+YT1×(XT0×XD2-XT2×XD0)+YT2×(XT1×XD0-XT0×XD1)] / K


              D=[(YD0-YD2)×(YT1-YT2)-(YD1-YD2)×(YT0-YT2)] / K


              E=[(XT0-XT2)×(YD1-YD2)-(YD0-YD2)×(XT1-XT2)] / K


              F=[YT0×(XT2×YD1-XT1×YD2)+YT1×(XT0×YD2-XT2×YD0)+YT2×(XT1×YD0-XT0×YD1)] / K


具體操作,就是先在lcd上顯示三個點,然后等用于點擊這三個點之后,采集這三個點的實際坐標和理論坐標,這樣就可以計算得到上面的參數。



下面附上我的代碼。


static void __irq touchscreen_irq(void)

{

   int xdata, ydata;

   rADCTSC = (1<<3)|(1<<2);         //上拉電阻無效,自動連續XY坐標轉換模式開啟

       rADCDLY = 40000;                    //延時

      

       rADCCON|=0x1;                 //開始A/D轉換

 

       while(rADCCON & 0x1);               //檢查A/D轉換是否開始

       while(!(rADCCON & 0x8000));        //等待A/D轉換的結束

             

       while(!(rSRCPND & (BIT_ADC))) ;     //判斷A/D中斷的懸掛位

 

       xdata=(rADCDAT0&0x3ff);                //讀取X軸坐標

   ydata=(rADCDAT1&0x3ff);                //讀取Y軸坐標

 

   uart_printf("xdata = %x,  ydata = %x adcdata0 = %x ", xdata, ydata, rADCDAT0);

   

       rSUBSRCPND|=BIT_SUB_TC;

   ClearPending(BIT_ADC);

                     

       rADCTSC =0xd3;               //再次設置等待中斷模式,這一次是判斷觸筆的抬起

       rADCTSC = rADCTSC|(1<<8);      //設置觸筆抬起中斷

 

       while(1)         //等待觸筆的抬起

       {

              if(rSUBSRCPND & (0x1<<9))     //檢查A/D觸摸屏中斷懸掛

              {

                     break;                   //如果觸筆抬起,則跳出該循環

              }

       }    

    uart_printf("adcdata0 = %x ", rADCDAT0);

rSUBSRCPND = 1<<9;

ClearPending(BIT_ADC); 

uart_printf("irq finishrn");

rADCTSC=0xd3;  // important here

}

 

 

void touchscreen_init(void)

{

rADCDLY=50000;               //設置延時

    rADCCON=(1<<14)+(9<<6);              //設置A/D預分頻

 

    rADCTSC=0xd3;                 //設置觸摸屏為等待中斷模式。

 

    pISR_ADC = (U32)touchscreen_irq;

 

rINTSUBMSK &= ~(BIT_SUB_TC);

rSUBSRCPND = 1<<9;

ClearPending(BIT_ADC);

EnableIrq(BIT_ADC);

}

void touchscreen_test(void) 

{

   touchscreen_init();

}

關鍵字:mini2440  裸機編程  觸摸屏驅動 引用地址:mini2440裸機編程--------觸摸屏驅動

上一篇:S3C2440 (4.3寸)LCD驅動程序之層次分析(十六)
下一篇:ARM處理器架構------可嵌套中斷的實現

推薦閱讀

2018年10月16日,中國北京 — 賽靈思開發者大會 (XDF) —自適應和智能計算的全球領先企業賽靈思公司(Xilinx, Inc.,(NASDAQ:XLNX))首席執行官 Victor Peng 宣布推出 Versal? – 業界首款自適應計算加速平臺 (Adaptive Compute Acceleration Platform ,ACAP),從而為所有的開發者開發任何應用開啟了一個快速創新的新時代。Versal ACAP 整合...
“經常尋找‘迷路’的它,掃的不干凈還需人工掃、清理塵盒易揚塵影響我們的健康”作為一款能幫我們減輕家庭負擔的智能掃地機,似乎并沒有讓我們省心省力。致力打造家居清潔服務的一站式解決方案的聯想,推出了全球首款自動集塵的掃拖一體機器人,自動集塵、掃拖一體、導航等高能設計,不僅彌補了用戶體驗上的不足,更是完全碾壓石頭、科沃斯等產品。 究...
歷史總是驚人的相似,記得在數百年前美國獨立戰爭之后,美國全力發展自己的工業體系,但是當年的全球霸主英國對其實行了全面技術封鎖。比如說英國將蒸汽機和珍妮紡紗機列為“高科技產品”,禁止對美國出口。現今,美國的科技力量處于全球領先位置,不僅與中國開啟了“毛衣戰”,同時還對我國部分企業進行高端技術,芯片技術無疑是其中的重點技術封鎖。集成...
瑞薩電子打造全新“Renesas Ready合作伙伴網絡”,搭建強大可靠的技術合作伙伴社區,為RA、RX和RL78 MCU產品線帶來性能優化的商業級構建模塊該計劃提供超過100家可信賴合作伙伴的軟件構建模塊;解決方案開箱即用,顯著加速產品上市2021年10月20日,日本東京訊 - 全球半導體解決方案供應商瑞薩電子集團 今日宣布,推出全球化技術合作伙伴網絡——“Ren...

史海拾趣

問答坊 | AI 解惑

電阻精度與常用阻值

電阻精度與常用阻值 大家看看電阻常用的阻值,做設計的時候別弄個沒得賣的電阻出來哦!有需要的下下來看看吧/…

查看全部問答∨

汽車電子范圍太大,我來發個好玩的。

如果有一輛車:前面看象奔馳,后面看象寶馬;這一定是吉利。           如果有一輛車:樣子一直沒變,但名稱一直在改;這一定是桑塔那。           如果有一輛車:三廂和二廂賣一 ...…

查看全部問答∨

s3c2440_NorFlash啟動 代碼

哪位同仁能提供一份s3c2440從Norflash啟動的Bootload代碼啊,網上的Bootload代碼鋪天蓋地啊,不夠都是Nandflash啟動滴!最好是Ads編譯環境下的啊,給個下載的鏈結地址就行了!…

查看全部問答∨

RS485通訊

要和電機通訊,電機有幾個,連在一起和電腦有一個接口,接口是RS485,那邊人告訴我格式是這樣, (1位起始+8位數據+1位數據/地址標識符+1位結束) 我原來做的東西,都是設置下MSCOMM控件的屬性,比如9600,n,8,1,然后發送8位的數據就可以。 那個 ...…

查看全部問答∨

UCOS中創建任務時返回OS_NO_MORE_TCB 急救!

如題,UCOS中創建任務時返回OS_NO_MORE_TCB,此時創建了才9個任務,竟然說沒有空余的TCB了,那可如何是好,還有好多任務要創建呢。會不會是哪里出了錯而導致OS_NO_MORE_TCB。請教達人指路!…

查看全部問答∨

請教一個時序約束?

這個時序一直不好約束,上升和下降沿都約束了,但還是有問題?請問大家這個在DC里怎么約束比較好?這個是8051里面的一個輸出信號,不是自己設計的…

查看全部問答∨

lwip 建立一個 tcp連接的簡要流程

搞了半天也沒出來,郁悶死了。。。 哪位能跟我簡要說下LWIP 作為客戶端,建立一個TCP 連接的簡要流程啊,包括都要調用哪幾個函數。另外我對各個函數里的callback函數一直沒搞明白,比如tcp_connect()里的回調函數。…

查看全部問答∨

zigbee好學嗎?

zigbee好學嗎?協議棧之類的復雜嗎?…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 乡城县| 岚皋县| 疏附县| 赤峰市| 恭城| 全南县| 龙川县| 蓝山县| 雅江县| 尼木县| 巧家县| 镇沅| 定襄县| 惠州市| 卓尼县| 和龙市| 万盛区| 东宁县| 新泰市| 涪陵区| 邓州市| 云林县| 偏关县| 枣庄市| 荆州市| 南雄市| 郁南县| 遂宁市| 云梦县| 固始县| 乌拉特中旗| 泰安市| 鄂伦春自治旗| 茶陵县| 修文县| 绥棱县| 台北市| 那曲县| 苍山县| 上栗县| 昌图县|