PIC初心者用掲示板

PICの初心者用の質問箱です。
何でもお気軽にどうぞ!

■最新ツリー一覧

□このツリー付近のツリー一覧

★新規ツリー作成

◆ 5798. 別割込に動じないクロックパルスを作るには? [悩める者] 2005/08/09 19:27
    ┗ 5799. Re: 別割込に動じないクロックパルスを作るには? [新参者] 2005/08/09 20:14


5798. 別割込に動じないクロックパルスを作るには? [悩める者] 2005/08/09 19:27
別割込動作がおきても正確なクロックを作る場合はどうしたらいいのでしょうか?
当たり前とは思うのですが、タイマー1などで正確なクロックを作っても、別の割込ルーチンの処理に時間がかかってしまうと戻ってきたときに当然、正確なタイマー1は乱れてしまいます。
もちろん別途オシレータなど独立して動かせばいいじゃん!と言われればそれまでですが、そのようなことはしたくないのです。これを16F8771個で実現可能でしょうか?

たとえば、10KHzの正確なパルスを基にするためタイマー1でつくり、一方でこのクロックにより動作する回路にて
RB0の↓割り込み入力発生により画面表示などの同期処理をしたいと想定。
(以下は中枢だけを抜粋)
---8<---8<---8<---8<---8<-----
;;CPU--4MHz
ORG4
GOTOINT
  ・
  略
  ・
;--ここが問題の箇所!?------
INT
BTFSCINTCON,INTF
GOTORBINT
BTFSCPIR1,TMR1IF
GOTOPULSE
;-----------------------------  
RBINT ;一定パルスにて↓イベントが起こる 
----------------------------
  -- 基本的に各ポートに出力して特定データを繰り返し出すだけ
---------------------------- 
PULSE
----------------------------
  - TMR1L,TMR1Hのパラメータ設定-
----------------------------
  INCF CNT,F
  MOVF CNT,W
  MOVWF PORTD
  RETFIE
---8<---8<---8<---8<---8<-----

このようなプログラムなのですが、INTの分岐はやはりこれしか方法がないのでしょうか?なんとかRBの割込でもPULSEが乱れずに正確なクロックを出しっぱなしにすることは不可能ですか?
よい知恵があればぜひアドバイスをください。

5799. Re: 別割込に動じないクロックパルスを作るには? [新参者] 2005/08/09 20:14
http://www.picfun.com/pic18.html
>別割込動作がおきても正確なクロックを作る場合はどうしたらいいのでしょうか?
>当たり前とは思うのですが、タイマー1などで正確なクロックを作っても、別の割込ルーチンの処理に時間がかかってしまうと戻ってきたときに当然、正確なタイマー1は乱れてしまいます。
>もちろん別途オシレータなど独立して動かせばいいじゃん!と言われればそれまでですが、そのようなことはしたくないのです。これを16F8771個で実現可能でしょうか?

繰返し周期の精度を求めるなら Timer1単独より
Timer1 + CCP1(SpesialEventTrigger)でCCP1割込みの方がお勧めです。
しかし、それでも別割込みの影響を受けますので
いっそPWM機能を利用したら良いかと思います。
http://www.picfun.com/pic18.html

PWMパルス出力条件(周期/Duty)を設定してしまえば、
以降は指定条件で勝手にパルス出力してくれますので
手間も掛からないでしょう。