小弟我目前技术不够,所以没有跑系统,目前在裸机实现TP划线功能的时候遇到下面这个问题,,还希望各位牛人帮忙看看
问题点:利用mini2440自带的TP测试程序,经过稍微修改后出现这个问题。当我的触摸笔点在TP上时(触摸笔一起在上面不抬起),如果Y方向的转换值 小于550的时候,就不能连续的输出转换值,如果点在Y方向靠下一点的位置,Y转换值大于550的时候,转换出来的数据就可以连续输出。
因为我想实现裸机点亮LCM 并实现划线测试TP的功能,现在的情况是屏的一半可以划线,而另外一半只能画点,而且TP是绝对没有问题的。 所以请大家帮忙了。
下面是转换数据的那一段程序,请大家帮忙看看。。。
void __irq AdcTsAuto(void)
{
int i;
U32 saveAdcdly;
if(rADCDAT0&0x8000)
{
//Uart_Printf("\nStylus Up!!\n");
rADCTSC&=0xff; // Set stylus down interrupt bit
}
//else
//Uart_Printf("\nStylus Down!!\n");
rADCTSC=(1<<3)|(1<<2); //Pull-up disable, Seq. X,Y postion measure.
saveAdcdly=rADCDLY;
rADCDLY=40000; //Normal conversion mode delay about (1/50M)*40000=0.8ms
rADCCON|=0x1; //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);
//YH 0627, To check Stylus Up Interrupt.
rSUBSRCPND|=BIT_SUB_TC;
ClearPending(BIT_ADC);
// rINTSUBMSK=~(BIT_SUB_TC);
// rINTMSK=~(BIT_ADC);
rADCTSC =0xd3; //Waiting for interrupt
rADCTSC=rADCTSC|(1<<8); // Detect stylus up interrupt signal.
Uart_Printf("count=%03d XP=%04d, YP=%04d\n", count++, xdata, ydata); //X-position Conversion data
rADCDLY=saveAdcdly;
rADCTSC=rADCTSC&~(1<<8); // Detect stylus Down interrupt signal.
rSUBSRCPND|=BIT_SUB_TC;
rINTSUBMSK=~(BIT_SUB_TC); // Unmask sub interrupt (TC)
ClearPending(BIT_ADC);
}
