いつも大変お世話になっております。リューキィです。
現在、RX65N Envision Kitでロータリーエンコーダを使用した試作機の開発をしているのですが、
信号の入力も表示も出来ているのですが、なぜか1回転した時の数字がズレてしまう事が多々発生してしまっています。
ロータリーエンコーダの接続の方法や、接続端子の接触不良等も疑ったのですがどうやら問題なさそうで、次にマイコン側の端子の設定
を疑っている次第です。
13chのD7(IRQ1)とD6(IRQ2)ロータリーエンコーダの信号線は接続しており、
モジュールのConfig_ICUでIRQ1/2ともに立上りエッジのレベル15 フィルタ無しにしてあります。
また、メインソース上で
R_GPIO_PinDirectionSet( GPIO_PORT_D_PIN_1, GPIO_DIRECTION_INPUT ); gpio_err |=R_GPIO_PinControl (GPIO_PORT_D_PIN_1, GPIO_CMD_IN_PULL_UP_ENABLE); R_GPIO_PinDirectionSet( GPIO_PORT_3_PIN_2, GPIO_DIRECTION_INPUT ); gpio_err |=R_GPIO_PinControl (GPIO_PORT_3_PIN_2, GPIO_CMD_IN_PULL_UP_ENABLE);
で入力端子設定とプルアップ設定も行っております。
(※もしかしたらこれが二重設定とかになっていて邪魔をしているのか??とも思い始めました)
また、ロータリーエンコーダのカウントは
IRQ1が立ち上がった際に、IRQ2の状態を見て0だったらカウントをインクリメント
IRQ2が立ち上がった際に、IRQ1の状態を見て0だったらカウントをデクリメント
としています。(それぞれの立ち上がりを見ずとも、一行目にelseでデクリメントすれば良いのもわかっているのですが、ズレが発生しているので何か問題があるのかもと思い、わざと
分けてあります)
ロータリーエンコーダの1周の分解能は40なので、非常に少ないのですが数回転回すとズレる状態です。
何かわかる方がいらっしゃいましたら、ご指導いただきたく思います。
よろしくお願い致します。
こんにちは。NoMaYです。少し脱線しますけれども、RXマイコンのタイマの位相計数モードというのが、これを自動でやってくれるものかな。RX65Nグループ、RX651グループ ユーザーズマニュアル ハードウェア編R01UH0590JJ0230 Rev.2.30 Pages 2763 2019.06.20www.renesas.com/jp/ja/document/mah/rx65n-group-rx651-group-users-manualhardware-rev230#page=1028「24.3.6.2 カスケード接続32 ビット位相計数モード…略…カスケード接続32 ビット位相計数モードは、A 相、B 相とZ 相の三相信号の入力が可能です。A 相/B 相に外部入力位相クロックMTCLKA/MTCLKB またはMTCLKC/MTCLKD、Z 相にMTIOC1A をそれぞれエンコーダパルスの信号とします。…略…」[追記]カウンタの基礎知識 - コンテックwww.contec.com/jp/support/basic-knowledge/daq-control/counter/#anc-03Google検索: ロータリエンコーダ 位相計数カウンタ OR 位相計数モードwww.google.com/search?q=ロータリエンコーダ 位相計数カウンタ OR 位相計数モードGoogle検索: ロータリエンコーダ ソフトウェア OR プログラムwww.google.com/search?q=ロータリエンコーダ ソフトウェア OR プログラム
頂いたリンクのマニュアルを見てみます!!