Si4735ラジオモジュールをLPC1114FN28で制御しようとしてWebを検索して
いると、LPC1114FN28に限らず、ロータリーエンコーダ制御で苦労しておら
れるようです
処理概要:
ロータリーエンコーダ処理を割込処理で実現しましたので、概要を公開します
ロータリーエンコーダは、秋月のRE-160Fを使用しています
処理概要:
- ロータリーエンコーダのパルスの立下りで割込みを受け付けています
- ロータリーエンコーダの割込ハンドラーは、ロータリーエンコーダが
回転するとmain()処理と非同期で起動され、フラグ:Flg_encorderが
AP_INT_OKの場合は、ロータリーエンコーダが接続されているGPIO
の状態を読み取り、グローバル変数に保存するとともに、Flg_encorder
をAP_INT状態に設定します - main()のwhileループで、Flg_encorderのフラグを常時監視し、AP_INT
状態に遷移した場合は、Flg_encorderをAP_INT_WAIT状態にします
(ロータリーエンコーダの割込みンドラーは、Flg_encorderがAP_INT_WAIT
状態の時は、main()処理に割込みを通知しません) - main()でロータリーエンコーダが右回転した場合や、左回転した場合の
処理を実行中は、Flg_encorderをAP_INT_WAIT状態を維持します
- ロータリーエンコーダは、チャタリングを起こす場合があるので、しばらく
waitしてから、Flg_encorderをAP_INT_OKに遷移させ、次の割込が処理
可能になったことを割込ハンドラーに通知します。 - Flg_encorderのフラグ状態
AP_INT_OK:main処理が割込みを受付可能状態
AP_INT_WAIT:main処理が割込みに伴う処理を実行中
AP_INT:割込みハンドラーからの割込通知
ソースコード:
赤字部分がミソです




※コメント投稿者のブログIDはブログ作成者のみに通知されます