Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

スイッチ押下で点滅間隔を変えてみた


どういう動作をさせたいのかを書いておく。

5つのLEDが交互に(10101と01010)点滅する。
スイッチを押すと点滅間隔が変わる。

今のところ、スイッチを押したときの動作が安定しない。これはチャタリング対策が全くされてないからか、プログラムが悪い(チャタリング対策は別にして)のか、回路が悪いのか、問題点が絞れていない。

ANSEL = %00000000 ‘ Configure AN pins as digital I/O
CMCON = %00000111 ‘ Comparator Off
IOC = %00001000 ‘ Interrupt-on-change enabled on GP3(=1)
‘OPTION_REG = %00000000
TRISIO = %00001000 ‘ GP0,1,2,4,5 is OUT
‘ GP3 is always IN
INTCON = %00001000 ‘ Enables the GPIO port change interrupt

といった設定項目が非常に煩雑だ。
最近やっと気づいてきたことだが、1つの端子に多くの機能が備わっているので分かりづらいのではないだろうか。
もっとピン数の多いPICから始めた方が楽なんだろうか。

追記
プログラムに処理を追加した。
チャタリングを云々する以前に、押したボタンが戻されたかどうかの判断すらやってなかったので、GPIO.3が0の間は処理を止めることにした。その間100mSということで、十分チャタリング体策にもなっているはずだ。
今のところ上に書いたとおり、ねらったとおりの動作をしている。

mikroBASICがプログラムのソースをhtmlで吐けるようなので、載せてみる。
PIC12F675 5 LEDs Int 005

このエントリーをはてなブックマークに追加

Posted under: mikroBasic


コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload CAPTCHA.