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


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

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

 投稿者:matsu  投稿日:2014年12月26日(金)22時18分47秒
  通報 返信・引用
  > No.704[元記事へ]

nekosan様
お世話になっています。
割込み関数で,タイマー1の値を読み出すように,

volatile unsigned short num=0;
volatile unsigned short new=0,old=0,dif=0;
void __attribute__ ((__interrupt__,__no_auto_psv__)) _IC1Interrupt(void)
{
    IFS0bits.IC1IF = 0; // Reset respective interrupt flag
    //new = IC1BUF; // Read capture entry
    new = TMR1; // Read Timer1
    dif = new-old;
    old = new;
    dat[num++]=dif;
}

とやってみましたが,同じ結果と相成りました。
専用タイマの値をキャプチャしても,タイマ1の値を読み出しても,結果は同じでした。
difの値をmainでループを組んで,LCDに表示させていますが,
302xx位の値が読み出されます。1800位足らないです。
(現在,アナログのFGを使っています)
分周を256まで試しましたが,得られた値を256すると,302xxになります。
つまりdifの値は同じ割合だけ足らないことになります。

とすると,やっぱりFGの発信周波数の誤差でしょうか・・・。でも6%もの誤差って大きすぎる
と思うのです。デジタルストレージオシロスコープで測定すると結構正確な1kHzが出ていて,
どうみても6%なんてずれてないんです。その1kHzでキャプチャしているので,6%もずれるとは
考えにくいです。さて,困りました・・・。
 
 
》記事一覧表示

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