-再三お世話になります。Vr8.2)入力中の回答があります。ページを離れますか?※ページを離れると、回答が消えてしまいますページを離れるA回答を続ける入力中のお礼があります。再三お世話になります。解決できて来ましたが、流石に今回はそうも行かないのではと覚悟しております。タイトルにありますPICと言えば、CCS社のコンパイラーが王道と聞いておりますが、素人の浅はかで、マイナーな方を選択した為、お手上げ状態に陥っています。質問の概要はサーボモータの制御信号生成が最終目的です。制御パルスを送り、希望通りの信号をLEDの点滅で確認出来るかとしたものです。割り込み発生後、1秒毎にPORTB-1を点灯する信号を出し、もう一方TIMER0から、0.5秒ごとにPORTB-1を消灯させる。後で気づきましたが、この時間設定では正確なものなら、まず1秒後に点灯、次の1秒までの間に、もう一方で0.5秒毎に消灯信号が出ているため、1秒後にはお互い打ち消し合って本来ずっと消灯する結果になるはずですが、実験では、0.1sec~0.5sec間隔の点滅が、ある周期ごとに繰り返されます。点滅現象になるのではと推測します。思うようになりません。そこで、そのソースコードを記述しましたので稀少mikroCをご使用の方に検証とご教示が叶えられれば、最高に幸せです。1;while(1){}}以上です。通報するこの質問への回答は締め切られました。10:12ANo.1です。PICは詳しくないので具体的なコードは書けませんが、基本的なやり方を答えます。・タイマー1つで行う方法タイマを0.5msインターバルで使って、40回(20ms)に一回ON指示、その2回(1ms)、3回(1.5ms)あるいは4回(2ms)後にOFF指示をします。タイマをインターバルにするには割込みハンドラの最初で割り込みを再設定します。設定の関係で正確な0.5msが出せなくて20ms周期の精度が悪いということなら、再設定ごとにカウントを補正して対応します。4.9のシーケンスで設定します。注意は、一回のタイマハンドラ処理が0.5msを超えるとこの方法では破綻する点です。・タイマー2つで行う方法タイマ0は20msインターバルで使い、タイマ1は1ms、1.5msあるいは2msのアラームで使います。初めにタイマ0を設定・起動し、ハンドラではタイマ0アップならタイマ0の再設定(インターバル利用の為)、ON指示をしてタイマ1を設定・起動します。タイマ1アップなら(タイマ1は再設定せずに)OFF指示だけします。サーボモータの代わりにLEDを使って確認するにしても、基本的な制御を同じにしないと検証にならないと思います。1sと0.5sじゃなく上記のタイミングのままでやってみた方が良いでしょう。パルスは見えなくても1ms、1.5ms、2msで明るさが変わることで分かると思います。10:10本当にしたいことの趣旨が分からないので本当の解決になるか分かりませんが、2つの周期が連動する必要があるなら2つのタイマーを使うのではなく1つのタイマーで駆動することで解決すると思います。質問の例では0.5秒ごとタイマー割込みを設定して、1秒ごとの処理は2回に一回、0.5秒ごとの処理は毎回実行すれば良いでしょう。お目に留めていただき、回答ありがとうごさいます。本題の趣旨が伝わりにくかった事の不手際、誠に申し訳ございません。このソースコードは質問中にもありますが、サーボモータを制御するため、異なる2つのパルス出力をLEDで目視確認しようとしたものです。規則正しい20msec周期毎に1msec・1.5msec・2msecのパルスを送ることで、それぞれのパルスに応じて、位置角度が右、中央、左と変化することは、一般的知れてます。実際に20msecに対して1msecや2msecのパルス信号を目視確認するには困難です。そこでタイマー割り込みによる動作確認が目視出来る様に設問中では、20msecの部分を1秒に充当させ、1msec~2msecに該当する位置パルスとして0.5秒に置き換えて現したものです。正確なパルスを得、それぞれが干渉し合わない様にする為にも2つのタイマー使用が理想かと思われます。要するに、1秒のタイマー割込み終了後、0.5秒のタイマー割込みを発生させ、その結果を1つのPORTに出力するコード構成が知り得たくてご教示願い出た次第でございます。この問題を解きましたが解答があっているのかわかりません。違う解答があれば参考に教えてください。回答数ランキングです。職業住宅アドバイザーこの専門家の回答をチェック他の専門家の回答をチェックこのQ&Aを見た人が検索しているワード割り込みサーボタイマーPICFこのQ&Aと関連する良く見られている質問QPICによるPWM出力の周期についてPIC(16f873)を用いて、モータをPWM制御しようと思っています。(PR2の値+1)x4x発振器周期xタイマー2のプリスケーラ値この周期は、自分で適当に決めていいのでしょうか?それともモータによって決まっているんでしょうか?そもそもPWMは、デューティ比で出力が変わると思うんですが、周期が違うとどのような違いが出るのでしょうか?周波数が高くなると細かい制御が出来るって感じでしょうか?初歩的な質問ですが、よろしくお願いします。_)mAベストアンサーhttp://homepage1.nifty.com/rikiya/software/106pwm1.htm知りたことは殆ど出てますますね他の回答も見るQPICでパルス数をカウントし、カウント数に応じで、ある操作をするPICにファンクションジェネレータからパルス(数100ms程度の幅)を0.2~1Hzで入力して、たとえば10回のパルスが入ってきたら、10回目のパルスの後、数ms後にパルスを出力するといった事をしたいのですが、わかりません。