1.srcpnd,intpnd
暫存器的意義:
一直不明白為什麼中斷服務程式最後要把
srcpnd,intpnd
相應位置
1,還把這個過程稱為
cleaningpend
,既然叫清除為什麼不是清零呢?查了手冊:當有中斷源請求中斷服務時,
srcpnd
相應位置
1,裁決(判斷是否響應中斷)時
intpnd
自動置1
。如果中斷遮蔽,
srcpnd置1
,但intpnd
不變。當
intpnd置1
時,響應中斷服務程式。中斷服務程式通過向相應位寫
1來清除未決斷條件(
pending
)。我理解是
srcpnd
只要有中斷源請求中斷就置
1,可以響應中斷時(未遮蔽),
intpnd
相應位置
1,否則為
0。為了使其他的中斷服務程式可以執行,在中斷服務程式中
srcpnd
、intpnd
相應位應清零,否則會認為一直有中斷源請求中斷。而
*pnd
暫存器的清零就是向相應位寫入
1(通過除錯發現)。我一直理解錯誤,以為寫入
1就是把相應位置
1,其實剛好相反。
2.編譯問題:
標頭檔案裡定義了
define bit_adc(0x1<<31)
結果編譯報錯:
warning :signed constant overflow 「<<」
上網查了才明白原來
ads1.2把1
當成有符號數,加上強制轉換就好了。
define bit_adc((u32)0x1<<31)
分析中斷程式:
/*中斷服務程式*/
void __irq touch_scrisr(void)
radctsc=(1<<3|1<<2);
//xp pull up disable,seq x y position
產生中斷後
waiting for interrupt mode
應被清除
//這裡
1<<2
設為自動測量模式。
radcdly=40000;
radccon|=0x01;
//start adc
while(radccon & 0x1);//check if enable_start is low
while(!(radccon & 0x8000));//check if ec(end of conversion) flag is high, this line is necessary~!!
while(!(rsrcpnd & (bit_adc)));//check if adc is finished with interrupt bit
xdata=(radcdat0&0x3ff);
ydata=(radcdat1&0x3ff);
rsubsrcpnd|=(bit_sub_tc);//clear pending
rsrcpnd =(bit_adc);
rintpnd =(bit_adc);
rintsubmsk=~(bit_sub_tc);
rintmsk=~(bit_adc);
radctsc=(0<<8|1<<7|1<<6|0<<5|1<<4|0<<3|0<<2|3);//waiting for interrupt
radctsc=radctsc|(1<<8);//detect stylus up
觸控螢幕抬起
while(1)//to check pen-up state }
uart_printf(" count=%03d, xp=%04d, yp=%04d/n",count++, xdata, ydata);//x-position conversion data
radcdly=40000;
//radctsc=radctsc&~(1<<8); // detect stylus down interrupt signal.
rsubsrcpnd|=bit_sub_tc;
//rintmsk=~(bit_sub_tc);
rintsubmsk=~(bit_sub_tc);
rsrcpnd =(bit_adc);//clear pending
rintpnd =(bit_adc);
}其中要是不加如下:
while(1)//to check pen-up state }
觸控螢幕會出現抖動,按下後會出現十幾個值,加上上面語句程式會停在
while
中,只有產生
int_tc
(觸控螢幕源中斷)中斷才執行
break
跳出執行其後的
uart_printf(" count=%03d, xp=%04d, yp=%04d/n",count++, xdata, ydata);
最後還有乙個現象我不明白,注意紅色語句,如果遮蔽掉,則觸控螢幕左半邊點兩下才有反應,右半邊正常。加上則觸控螢幕正常。
觸控螢幕開發 觸控螢幕甩屏互動系統
這是南京酷牛科技最新開發的一款上下屏聯動觸控螢幕軟體。比較獨特的是,玩家可以通過控制乙個下屏,與上屏五個顯示屏進行展示的互動。軟體組成 軟體特點 1 一台大的顯示器 支援led屏,投影儀,拼接屏 可以和多個觸控螢幕組成區域網實現觸屏資料飛至大屏,不限制觸控螢幕的個數。如果只有1個觸控螢幕也可以用擴充...
觸控螢幕驅動
輸入子系統體系 核心層 linux dir drivers input input.c 提供最核心函式 裝置事件層 linux dir drivers input evdev.c 提供handler 提供輸入裝置產生的原始資料並上報給應用程式,這適用於 所有輸入裝置,該觸控螢幕也不例外 編寫基於輸入...
台達觸控螢幕許可權設定
觸控螢幕,比起高階程式語言算是非常簡單了,很多功能裝置廠家都已經為我們做好了,只需要像 一樣點來點去就行了,呵呵,剛開始觸控螢幕的許可權找不到在哪兒設定,找來找去倒也花了點時間,如果有需要的朋友搜尋到此文章,希望對你有用處。操作方法 觸控螢幕預設的許可權為0,最高端為7。只需修改 畫面按鈕 的屬性 ...