[戻る]
過去ログ [ 0001 ]
過去ログ:     ワード検索: 条件: 表示:

タイトル
記事No
投稿日
投稿者
参照先
ON-CHANGE割込み
365
: 15/10/08-17:19
gon <sakaex@grn.janis.or.jp>

PIC12F675のGP1とGP2の変化を
#INT_RAのON-CHANGE割込み使ってみようとしています。
言語はCCS-Cです。

1.GP1がHになって割込みが発生します。
2.ポートを入力して、前回の割込時の値として比較して
 GP1が変化したことを知り割込み内で
 相当するプログラムを実行します。
3. 2.のプログラムを実行中にGP2がHに変化しました。

割込みを抜けた後、3.で変化があったので再び
割込みが発生することを期待したのですが、発生しません。
どういうプログラムにすれば発生させることがでるのでしょうか?

また、不可能とすれば
感覚的には
「GP1とGP2の変化が重なったので・・・」と思うのですが
ならば、「重なりの時間差」がどれくらいあればいいのか等の
理論的なことがわかりません。

教えてください。
▲pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: ON-CHANGE割込み
366
: 15/10/08-17:53
don

CCS-Cやめましょうよ、PIC12F675なんて古いやつ使うのも
今更習得できないと諦めてるのかも知れませんけど


> PIC12F675のGP1とGP2の変化を
> #INT_RAのON-CHANGE割込み使ってみようとしています。
> 言語はCCS-Cです。
>
> 1.GP1がHになって割込みが発生します。
> 2.ポートを入力して、前回の割込時の値として比較して
>  GP1が変化したことを知り割込み内で
>  相当するプログラムを実行します。
> 3. 2.のプログラムを実行中にGP2がHに変化しました。
>
> 割込みを抜けた後、3.で変化があったので再び
> 割込みが発生することを期待したのですが、発生しません。
> どういうプログラムにすれば発生させることがでるのでしょうか?
>
> また、不可能とすれば
> 感覚的には
> 「GP1とGP2の変化が重なったので・・・」と思うのですが
> ならば、「重なりの時間差」がどれくらいあればいいのか等の
> 理論的なことがわかりません。
>
> 教えてください。
▲pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: ON-CHANGE割込み
367
: 15/10/09-08:36
avo <kazuchiyo@hotmail.com>

>割込みを抜けた後、3.で変化があったので再び
>割込みが発生することを期待したのですが、発生しません。
PIC12F675の場合は、
入力変化割り込みのフラグがGP0〜GP5一括になっているため
割り込みを抜けた段階でフラグがクリアされたためだと思います。
 
同一のフラグなので、いくら時間差があっても
割り込みを抜ける前に他の入力変化割り込みが発生しても割り込みは発生しません。
 
割り込みがランダムに起きず、一定の時間差が見込めるなら対策としては
 2.の割り込み処理を短くする。
 動作クロックを上げて状態変化割り込みが重複しないようにする。
 入力変化のフラグを別途もうけて割り込み処理外で順番に処理する。
 
できないようでしたら、
PIC12F1822などの各入力ピンに対応した
状態変化割り込みフラグを持っているデバイスにする。
などでしょうか・・・?
 
蛇足です。
他の割り込みとの共存では割り込みフラグが別々なので
仮に割り込みが同時に発生した場合に一方の割り込みを処理した後も
他の割り込みフラグがクリアされていないので、続けて割り込みが発生します。
▲pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re^2: ON-CHANGE割込み
368
: 15/10/10-09:25
gon

回答ありがとうございます。

> 入力変化割り込みのフラグがGP0〜GP5一括になっているため
> 割り込みを抜けた段階でフラグがクリアされたためだと思います。
納得できました。

> 状態変化割り込みフラグを持っているデバイスにする。
> などでしょうか・・・?
CPUを変更したら成功しました。

> >割込みを抜けた後、3.で変化があったので再び
> >割込みが発生することを期待したのですが、発生しません。
> PIC12F675の場合は、
> 入力変化割り込みのフラグがGP0〜GP5一括になっているため
> 割り込みを抜けた段階でフラグがクリアされたためだと思います。
>  
> 同一のフラグなので、いくら時間差があっても
> 割り込みを抜ける前に他の入力変化割り込みが発生しても割り込みは発生しません。
>  
> 割り込みがランダムに起きず、一定の時間差が見込めるなら対策としては
>  2.の割り込み処理を短くする。
>  動作クロックを上げて状態変化割り込みが重複しないようにする。
>  入力変化のフラグを別途もうけて割り込み処理外で順番に処理する。
>  
> できないようでしたら、
> PIC12F1822などの各入力ピンに対応した
> 状態変化割り込みフラグを持っているデバイスにする。
> などでしょうか・・・?
>  
> 蛇足です。
> 他の割り込みとの共存では割り込みフラグが別々なので
> 仮に割り込みが同時に発生した場合に一方の割り込みを処理した後も
> 他の割り込みフラグがクリアされていないので、続けて割り込みが発生します。
▲pagetop

- WebForum -