teacup. [ 掲示板 ] [ 掲示板作成 ] [ 有料掲示板 ] [ ブログ ]


新着順:86/789 記事一覧表示 | 《前のページ | 次のページ》

Re: キャプチャの値が6%ほどずれるのは?

 投稿者:matsu  投稿日:2015年 1月 7日(水)00時03分58秒
  通報 返信・引用
  > No.711[元記事へ]

nekosanさん
お世話になります。
一定割合の誤差が出るので,5.86%だけ強制的に増えるようにして,ほぼ理論上の値が
出るようにしました。ちょっと対処療法過ぎて気持ち悪いのですが,まだ先があるので,
この先を作りたいと思います。
(他の掲示板にも投稿してみたいのですが,よろしいでしょうか?)

__eds__ unsigned long dat [16384] __attribute__((eds)); /*dat[0]-dat[16384]が使用可能*/
volatile unsigned long low=0, high=0;
volatile unsigned long old=0, new=0, dif=0;
volatile unsigned short num=0;

void __attribute__ ((__interrupt__,__no_auto_psv__)) _IC1Interrupt(void)
{
    IFS0bits.IC1IF = 0; // Reset respective interrupt flag
    low  = IC1BUF; // Read capture entry
    high = IC2BUF; // Read capture entry
    new = (high<<16)|low;
    new= new+(new>>4)-(new>>8);//5.86%強制補正
    dif = new-old;
    old = new;
    dat[num++]=dif;
    num&=0x3fff;//上位ビットを消して0-16383までにする
}


int main(int argc, char** argv)
{
    initCLK();
    initLED();
    initLCD();
    initPushSW();
    initDipSW();
    initCaptureControl();


    clrscr();
    while(1){
        waitms(200);
        gotoxy(0,0); lcdprintf("%u %5u",_RF5,num-1);
        gotoxy(0,1); lcdprintf("%u %10lu",_RF5,dat[num-1]);
        ledFlow();
    }

    return (EXIT_SUCCESS);
}





> --------------------------
> 32MHzの内部クロックを32ビットカウンタでカウントしてキャプチャ。
> FGのクロックの立ち上がりでキャプチャ。-5.5%位の誤差が出る。
>
> FG有効数字  FG(Hz)  計測↑キャプチャ値 見た目の変動 理論上↑キャプチャ値 差分%
>      2        10          3031700             ±400      3200000         -5.259375
>      3       100           302370              ±40       320000         -5.509375
>      4      1000            30215               ±5        32000         -5.578125
>      4     10000             3020               ±1         3200         -5.625
> --------------------------
 
 
》記事一覧表示

新着順:86/789 《前のページ | 次のページ》
/789