PIC初心者用掲示板

★★ 質問する前に下記をチェック ★★
(PICに関する疑問は必ず解決するはず)
←←←「電子工作の実験室」へ
←←←← 

■最新ツリー一覧

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

★新規ツリー作成

◆ 9738. ボタン入力の判定について [TOTO2006/02/25 03:47


9738. ボタン入力の判定について [TOTO2006/02/25 03:47
はじめましてTOTOと申します。(PIC勉強中1週間目;)
さっそく質問です。
音声LSI[ISD5008P]をPIC16F84で制御しようと思い
LSI勉強キットを買ったのですが、サンプルソースの
ボタン入力判定の記述に同じ分岐命令が10msecのタイマ
をはさんで2度書かれていました。
(下記ソース コメント部 [分岐A]と[分岐B]です。)
タイマをはさんで同じ命令をさせるという事は、
何か意味を持っているのでしょうか?
こちらがそのソースです。
注釈は自分なりにまとめてみました。

LOOP
CALL BUTTON1
GOTO LOOP

BUTTON1 ;BUTTON1の内容↓

;(TABキー省略ごめんなさい)

;[分岐A] ボタン入力の有無
BTFSC PORTA,0 ;RA端子0番の 0 or 1 判定
RETURN ; 1 の時BUTTON1終了

; 0 の時↓へ
CALL TIM10MS ;10msecのウエイト

;[分岐B] ボタン入力の有無
BTFSC PORTA,0 ;RA端子0番の 0 or 1 判定
RETURN ; 1 の時BUTTON1終了

;ここから先はISD8005Pへの制御命令(省略)
RETURN

宜しくお願いいたします。

9739. Re: ボタン入力の判定について [TOTO2006/02/25 03:57
な、なんと!
半角スペースが詰められてソースのレイアウトが!?

9740. Re: ボタン入力の判定について [PICマスター2006/02/25 04:22
>はじめましてTOTOと申します。(PIC勉強中1週間目;)
>さっそく質問です。
>音声LSI[ISD5008P]をPIC16F84で制御しようと思い
>LSI勉強キットを買ったのですが、サンプルソースの
>ボタン入力判定の記述に同じ分岐命令が10msecのタイマ
>をはさんで2度書かれていました。
>(下記ソース コメント部 [分岐A]と[分岐B]です。)
>タイマをはさんで同じ命令をさせるという事は、
>何か意味を持っているのでしょうか?
>こちらがそのソースです。
>注釈は自分なりにまとめてみました。
>
>LOOP
> CALL BUTTON1
> GOTO LOOP
>
>BUTTON1 ;BUTTON1の内容↓
>
> ;(TABキー省略ごめんなさい)
>
> ;[分岐A] ボタン入力の有無
>BTFSC PORTA,0 ;RA端子0番の 0 or 1 判定
>RETURN ; 1 の時BUTTON1終了
>
> ; 0 の時↓へ
>CALL TIM10MS ;10msecのウエイト
>
> ;[分岐B] ボタン入力の有無
>BTFSC PORTA,0 ;RA端子0番の 0 or 1 判定
>RETURN ; 1 の時BUTTON1終了
>
>;ここから先はISD8005Pへの制御命令(省略)
>RETURN
>
>宜しくお願いいたします。

ボタンの回路が分からないので一概には言えないですが、良くある話を一つ・・・。

ボタン押下時には「チャタリング」という問題が発生することがあります。フツーなら回路で対処する(CRによる対処、バッファリング等によるレベル維持など)んですが、簡単な回路だとプログラム側で対処せねばなりません・・・。

あとは調べてみよう!

9741. Re: ボタン入力の判定について [Kazu2006/02/25 04:25
>タイマをはさんで同じ命令をさせるという事は、
>何か意味を持っているのでしょうか?
チャタリングの除去をしています。

メカニカル接点は、チャタリングと言う現象が生じます。
・・・リレーやスイッチの接点が切り替わった時に
   数ms〜数十ms(100ms超える物もあるみたいです。)ばたついて
   ON/OFFを繰り返す現象

入力変化を検出したら、数回入力状態を確認(ポーリング)して
同じ入力状態が続いたら入力が安定したと判定します。
・・・厳密にはチャタリング期間に見合った
   ウエイトと回数を選択します。

もしチャタリング除去をしなかったら
スイッチを1回しか押していないのに
数回押したような挙動を起こす場合があります。
・・・数回検出されても動作に影響しないならチャタリング除去は不要です。

9742. Re: ボタン入力の判定について [初心者キング2006/02/25 06:07

チャタリングって、チャットの意味なんだよ。
べちゃべちゃおしゃべりする、転じて接点が
バタバタとばたつくことを言うんだ。