LOZHEN 发表于 2023-5-5 12:07:25

PCA捕获输入频率失败救助

下载器频率设置为30M
void PCA(void) interrupt 7using 1
{
      if(CCF0 == 1)
      {
                CCF0 = 0;
                if (CF && ((CCAP0H & 0x80) == 0))
      {
            CF = 0;
            cnt++;
      }
                count0=count1;
                ((BYTE*)&count1)=CCAP0L;
                ((BYTE*)&count1)=CCAP0H;
                ((BYTE*)&count1)=cnt;
                ((BYTE*)&count1)=0;
                length=count1-count0;
               
                t5=(3000000000/length)/10000;
                ((BYTE *)&length) = 0;
                cnt=0;      
                //over_count=0;
      }
      if(CF == 1)
      {
                CF = 0;
                cnt++;
      }
}

oid main()
{
    P1M0 = 0x00;      //1.01234567 power put
    P1M1 = 0x00;
   P3M0 = 0x7F;      //3.23456 power put         
    P3M1 = 0x80;
   P36 = 1;//CS
    P33 = 1;// DATA
      P32 = 1;// WR
          P37 = 0; //TSS1

      
    ACC = P_SW1;
    ACC &= ~(CCP_S0 | CCP_S1);      //CCP_S0=0 CCP_S1=0
    P_SW1 = ACC;                  //(P1.2/ECI, P1.1/CCP0, P1.0/CCP1, P3.7/CCP2)
    CCON = 0;   
          CMOD = 0x09;
          CCAPM0 = 0x11;
      
               CL = 0;                         //??PCA???
    CH = 0;
    CCAP0L = 0;
    CCAP0H = 0;
                cnt = 0;
               count0 = 0;
    count1 = 0;
                CR = 1;                         //PCA???????
                         EA = 1;
                     
    while (OK)

    {
            displaydata(t5,0,0,0,0);
               
   // delay6();
                        //                        delay6();
                                                delay6();
          }
      
}

梁工 发表于 2023-5-5 14:11:32

本帖最后由 梁工 于 2023-5-5 14:15 编辑

帖子应该发在“PWM/144MHz时钟源的PWM/45路PWM+3路CCP/7组不同周期的PWM/DAC”专栏,难怪我找不到。
捕捉测频,就是测量周期(上升沿或下降沿均可),然后计算频率,下面的例子是捕捉周期,自己计算一下倒数即可。
请参考“03-PCA-3路捕捉-串口1返回-C语言”


页: [1]
查看完整版本: PCA捕获输入频率失败救助