主题 : 2440的触摸屏实验求助 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 20748
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
综合积分: 14 分
注册时间: 2010-05-07
最后登录: 2012-11-09
楼主  发表于: 2010-07-11 19:56

 2440的触摸屏实验求助

在2440 test程序中的触摸屏实验,在中断程序中没有屏蔽中断,当ADC转换完成时产生中断(程序中红色语句),不会产生中断嵌套吗???中断子程序如下:以下是我的注解,不知是否正确,小弟不才,请各位大哥赐教。。。
void __irq AdcTsAuto(void)      // 中断服务程序
{
   int i;
   U32 saveAdcdly;
    if(rADCDAT0&0x8000)                   // 如果释放
  {
     // Uart_Printf("\nStylus Up!!\n");
     rADCTSC &= 0xff;                           // 设置为:按下中断
  }
    // else
    // Uart_Printf("\nStylus Down!!\n");
  rADCTSC = (1<<3)|(1<<2);               // 2.禁止 XP 上拉,转到自动连续模式
saveAdcdly = rADCDLY;                    // 备份延时时间
  
rADCDLY = 40000;                            // 3.转换延时 (1/50M)*40000=0.8ms
  rADCCON |= 0x1;                               // 开始转换 ADC
  while(rADCCON & 0x1);                   // 检查是否开始转换(开始后自动清零)
while(!(rADCCON & 0x8000));         // 等待转换完成!!  
  while(!(rSRCPND & (BIT_ADC)));    // 等待 ADC 完成(产生 ADC 中断)
xdata = (rADCDAT0 & 0x3ff);             // 读出值
ydata = (rADCDAT1 & 0x3ff);
  
  rSUBSRCPND |= BIT_SUB_TC;     // 清中断标志(注意:先清子中断)
  ClearPending(BIT_ADC);
  
  rINTSUBMSK = ~(BIT_SUB_TC);    // 开中断
rINTMSK = ~(BIT_ADC);
    
rADCTSC = 0xd3;                                // 4.等待中断模式,YM = GND
rADCTSC = rADCTSC|(1<<8);          // 释放产生中断
while(1)                                                 // 等待释放
{
    if(rSUBSRCPND & (BIT_SUB_TC))   // 如果产生中断(释放)(在这里似乎又产生了中断)
   {
       // Uart_Printf("Stylus Up Interrupt~!\n");
       break;                    
      }
}  
  Uart_Printf("count=%03d  XP=%04d, YP=%04d\n", count++, xdata, ydata);          
  rADCDLY = saveAdcdly;                    // 恢复延时值
rADCTSC = rADCTSC & ~(1<<8);    // 设置为:按下中断
  
rSUBSRCPND |= BIT_SUB_TC;      // 清中断标志
rINTSUBMSK = ~(BIT_SUB_TC);    // 开中断 (TC)      
  ClearPending(BIT_ADC);
}
级别: 新手上路
UID: 20748
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
综合积分: 14 分
注册时间: 2010-05-07
最后登录: 2012-11-09
1楼  发表于: 2010-07-13 18:57
没人回答啊。。。