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


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

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

 投稿者:nekosan  投稿日:2014年12月27日(土)00時46分37秒
  通報 返信・引用
  > No.705[元記事へ]

matsuさんへのお返事です。

> 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%もずれるとは
> 考えにくいです。さて,困りました・・・。
>


delay関数内部で参照しているクロックって、どこの
クロックなんでしょうね?
タイマ1やキャプチャが利用しているクロックと、
delayが利用しているクロックのソースが異なっている
と考えるのが自然な気がするのですが…


PLLで8MHzから32MHzを作り出す部分でおかしなことに
なってるのかな?と思ったんですが、delayとクロック
ソースが同じだと、説明がつかないんですよね…
なので、delayが使ってるクロックは、話題の機能が
使ってる部分とはソースが異なるのかな?と。



あと気になっているのは、何も処理していない時間には、
sleepモードを使っていますか?
もし使っているとしたら、sleep中のクロック周りの動作や、
sleep開始時、復帰時のクロックの動作がどのようになるか
が少し気になっています。

sleepをもし利用しているとしたら、それを一旦無効に
して、ただの空回しにしてみると、どうなりますかね?

 
 
》記事一覧表示

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