打印
[MCU]

AD没反应

[复制链接]
451|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shimx|  楼主 | 2020-12-9 23:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
liliang9554| | 2020-12-9 23:56 | 只看该作者
怎么测速的

使用特权

评论回复
板凳
内政奇才| | 2020-12-10 09:08 | 只看该作者
AD开关打开吗?

使用特权

评论回复
地板
内政奇才| | 2020-12-10 09:09 | 只看该作者
程序贴出来看一下,AD初始化部分的

使用特权

评论回复
5
zhanghqi| | 2020-12-10 18:59 | 只看该作者
程序看看啊

使用特权

评论回复
6
shimx|  楼主 | 2020-12-10 19:04 | 只看该作者

/*****************T1周期中断***********************************/
   EvaRegs.T1CON.bit.TMODE=2;      //计数模式为连续增计数
   EvaRegs.T1CON.bit.TPS=1;        //T1CLK=HSPCLK/2=37.5MHz
   EvaRegs.T1CON.bit.TENABLE=0;    //暂时禁止T1计数
   EvaRegs.T1CON.bit.TCLKS10=0;    //使用内部时钟
   
   EvaRegs.GPTCONA.bit.T1TOADC=2;  //周期中断启动ADC
   
   EvaRegs.EVAIMRA.bit.T1PINT=1;   //使能定时器T1的周期中断
   EvaRegs.EVAIFRA.bit.T1PINT=1;   //清除定时器T1的周期中断标志位
   
   EvaRegs.T1PR=0x0EA6;            //周期为0.1ms
   EvaRegs.T1CNT=0;                //初始化计数器寄存器

/***************************定时器4测速**************************************/
  EvbRegs.T4CON.bit.TMODE=2;//连续增
        EvbRegs.T4CON.bit.TPS=0;//预定标寄存器为1,TCLK=75/2=37.5,
                                //              0,TCLK=75
        EvbRegs.T4CON.bit.TENABLE=0;//暂时禁止T4计数
        EvbRegs.T4CON.bit.TCLKS10=0;//使用内部时钟
        EvbRegs.T4CON.bit.TECMPR=1;//使能定时器比较操作

        EvbRegs.GPTCONB.all=0;
        EvbRegs.T4PR=0xffff;  
        EvbRegs.T4CNT=0;
        EvbRegs.EVBIFRB.bit.T4PINT=1;
        EvbRegs.EVBIMRB.bit.T4PINT=1;//T4周期中断

/*****         CAP6              **********/
        EvbRegs.CAPCONB.bit.CAPRES=0;
        EvbRegs.CAPCONB.bit.CAP6EN=0;//CAP6//主程序打开
        EvbRegs.CAPCONB.bit.CAP6TSEL=0;//CAP6选择T4
        EvbRegs.CAPCONB.bit.CAP6TOADC=0;//不动ADC
        EvbRegs.CAPCONB.bit.CAP6EDGE=1;//上升沿

        EvbRegs.CAPFIFOB.bit.CAP6FIFO=0;//状态值里预存一个值,每次捕获都进入中断
        EvbRegs.EVBIMRC.bit.CAP6INT=1;//CAP6中断使能
        EvbRegs.EVBIFRC.bit.CAP6INT=1;//CAP6中断标志复位

main()
{
// int i ,j;

  //int xianshi[4]={0,0,0,0}; /*显示初值*/
  InitSysCtrl();      //系统初始化      
  Init_Port();
  DINT;
  IER=0X0000;
  IFR=0X0000;
  InitPieCtrl();
  InitPieVectTable();      
  ADinitial();
  InitEv();
  huanxiang();
  delay1();
  delay1();
  
  EALLOW;
  PieVectTable.ADCINT=&adc_isr;
  PieVectTable.CAPINT6=&CAPINT_ISR;
  PieVectTable.T4OFINT=&T4PINT_ISR;
  EDIS;
  IER|=M_INT1;
  IER|=M_INT5;
  PieCtrlRegs.PIEIER1.bit.INTx6=1;
  PieCtrlRegs.PIEIER5.bit.INTx5=1;
  PieCtrlRegs.PIEIER5.bit.INTx4=1;
  EINT;
  ERTM;
  EvaRegs.T1CON.all=0x0040;//使能定时器 T1,T3,T4
  EvbRegs.T3CON.all=0x0040;
  EvbRegs.T4CON.all=0x0040;
  EvbRegs.CAPCONB.bit.CAP6EN=1;






interrupt void T4PINT_ISR(void)
   {
        count++;//count1++
        
        T4count++;        
         if (T4count==1)
          {
         
           cap6count=0;
           EvbRegs.T4CNT=0;
          }
          if(T4count>=1001)
          {
            t=((float)(T4count-1)*65535+EvbRegs.T4CNT)/75000000;
            SPEED=(float(cap6count))/t;
            SPEED+=0.5;
            SRM.wEst_10xrpm=SPEED;
            T4count=0;
            cap6count=0;
            
             if(SRM.wEst_10xrpm>400)//Ilimit值待定  电流限幅值
       {
        Ilimit=305;
       }
      else
       {
        Ilimit=365;  
       }

            
            
           
          }
  EvbRegs.EVBIFRB.bit.T4OFINT=1;
  EvbRegs.EVBIMRB.bit.T4OFINT=1;
  PieCtrlRegs.PIEACK.bit.ACK5=1;
  EINT;


   }
/*************************CAP6捕获计数***********************************/
interrupt void CAPINT_ISR(void)

{   
       cap6count++;
            EvbRegs.EVBIFRC.bit.CAP6INT=1;//中断标志复位
            EvbRegs.EVBIMRC.bit.CAP6INT=1;//中断使能
     PieCtrlRegs.PIEACK.bit.ACK5=1;//相应第五组中断CAP6
            EINT;
     }



Adc_Result[0]=(long)AdcRegs.ADCRESULT0;
    Adc_Result[1]=(long)AdcRegs.ADCRESULT1;
    Adc_Result[2]=(long)AdcRegs.ADCRESULT2;
    Adc_Result[3]=(long)AdcRegs.ADCRESULT7;

AdcRegs.ADCTRL2.bit.RST_SEQ1=1;   //复位SEQ1
  AdcRegs.ADC_ST_FLAG.bit.INT_SEQ1_CLR=1;  //清除INT SEQ1 位
  PieCtrlRegs.PIEACK.all=PIEACK_GROUP1;//响应中断
  EINT;

使用特权

评论回复
7
shimx|  楼主 | 2020-12-10 19:07 | 只看该作者

EALLOW;
   PieVectTable.ADCINT=&ADC_ISR;
   PieVectTable.CAPINT6=&CAPINT6_ISR;
   PieVectTable.T4OFINT=&T4PINT_ISR;
   EDIS;
这块粘错了  程序应该没问题  
到底哪里出问题了

使用特权

评论回复
8
zhanghqi| | 2020-12-10 19:10 | 只看该作者
这个需要你整体的看下的,还有需要看下两边的关键缓存及变量设置的是否一致的。

使用特权

评论回复
9
lium| | 2020-12-10 19:14 | 只看该作者
楼主用的什么单片机?msp430没有1T这种说法

使用特权

评论回复
10
shimx|  楼主 | 2020-12-10 19:20 | 只看该作者
解决了,呵呵

使用特权

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

本版积分规则

857

主题

10661

帖子

5

粉丝