打印
[ZLG-ARM]

用MAT启动AD采样,并使用中断方式,这样可以吧?

[复制链接]
2094|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jstu023123|  楼主 | 2009-5-15 10:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 LPC2131的AD0.3采样,使用MAT1.0启动转换,我将光盘中的ADC_MAT1.0修改下,使用中断方式,修改部分如下:

uint16 adcbuf[300];
uint16 count=0;
//uint8 flag = 0;

//中断子程序

void __irq IRQ_ADC (void)
{
    adcbuf[count] = (ADDR>>6)&0x3ff ;
    count += 1;
    //flag = 0
    if(count>=120)  T1TCR = 0x00;
    
    VICVectAddr = 0x00;   // 通知VIC中断处理结束
}

int main (void)
{
uint32 ADC_Data, i;
char str[20];

PINSEL0 = 0x00000005;    // 管脚连接串口
PINSEL1 = 1 << 28;     // P0.30连接到AD0.3
//PINSEL0 |= 2<<24;   // MAT1.0输出

UART0_Init( );      // UART0初始化

/* 设置MAT1.0匹配翻转 */ 
T1MCR = 0x02;      // 设置T1MR0匹配后将T1TC复位
T1EMR = 3 << 4;      // T1MR0匹配后MAT1.0输出翻转
T1MR0 = Fpclk/100;     // 输出频率周期控制

/* 进行ADC模块设置 */
ADCR = (1 << 3)      | // SEL=8,选择通道3
   ((Fpclk / 1000000 - 1) << 8) | // CLKDIV=Fpclk/1000000-1,转换时钟为1MHz
   (0 << 16)      | // BURST=0,软件控制转换操作
   (0 << 17)      | // CLKS=0, 使用11clock转换
   (1 << 21)      |   // PDN=1,正常工作模式
   (0 << 22)      |   // TEST1:0=00,正常工作模式
   (6 << 24)      | // START=6,当EDGE选择的边沿出现在MAT1.0时启动AD转换
   (0 << 27);        // 下降沿

VICIntSelect = 0x00;    // 所有中断通道设置为IRQ中断
VICVectCntl0 = 0x20 | 18;   // 设置ADC中断通道分配最高优先级
VICVectAddr0 = (uint32)IRQ_ADC; // 设置中断服务程序地址
VICIntEnable |= (1<<18);   // 使能ADC中断

ADC_Data = ADDR;  // 读取ADC结果,并清除DONE标志位

T1TCR = 0x03;      // 启动并复位T1TC
T1TCR = 0x01;

while(1)
{
    /*if(flag==1)
       {
           sprintf(str, "%4d, ", count);
           count = 0; 
           flag = 0;
           T1TCR = 0x03;
           T1TCR = 0x01;
       }*/

      if(count>=120)
      {
         for(i=0;i<120;i++)
         {
             sprintf(str, "%4d, ", adcbuf);
             ISendStr(str);
          }
          count = 0;

          flag = 0;
          T1TCR = 0x03;
          T1TCR = 0x01;
     }
     Delay(1);
  }

return 0;   
}
这样写AD中断采样可以吗?运行发现没数据输出,MAT1.0有波形产生,在程序中设一标志位flag测试有无进入中断,结果发现未置位,没有中断产生。。。到底哪儿设置不对啊,大家帮忙看一下,提个醒儿

相关帖子

沙发
zlg_Wankai| | 2009-5-16 08:22 | 只看该作者

没有使能全局中断

没有使能全局中断

IRQEnable();

使用特权

评论回复
板凳
usber| | 2009-5-20 14:28 | 只看该作者

不使能中断不行

使用特权

评论回复
地板
xamic| | 2009-6-1 21:08 | 只看该作者

路过

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

93

帖子

0

粉丝