おはようございます
今学校(自習)でSunHayato RL78/G14 を触っていますが、ブザーを鳴らすのに必要なソースコードと可変抵抗の数値取得ソースコードがわかりません(ó﹏ò。)
LEDや7セグはつけれましたが詰んでいます(ó﹏ò。)
追記:ブザーを鳴らせました!ありがとうございます。
可変抵抗の値取得はまだですがコツコツ頑張ります!
チョコです。
>ちなみにボードはSunhayato MT-LR78を使っています。
このボードの取扱説明書を見ると,ANI18に接続されているようです。
そこで,コード生成で「A/Dコンバータ」を選んで,「A/Dコンバータ動作設定」を「使用する」,「コンパレータ動作設定」を「許可」に設定します。
スクロールして,下の方も設定します。
「ソフトウェア・トリガ・モード」が通常の使い方になります。「連続セレクト・モード」で「変換開始チャネル設定」を「ANI18」に設定します。
「変換時間設定」は,一番遅くしておけばいいと思います。これで,「コード生成」すると,初期設定と処理関数が生成されます。
main関数でR_ADC_Start関数を呼びだすことでA/D変換が起動します。変換が完了すると,INTAD割り込みが発生するので,
r_cg_adc_user.cのr_adc_interrupt関数に変換結果を読み出す処理(r_cg_sdc.cのR_ADC_Get_Result関数等)を組み
変換結果をどこかの変数に格納して,使用してください。
>素人ですみません(汗)
誰でも,最初は素人です。
A/Dの制御方法を基本的に間違えています。A/D変換を開始してもすぐには結果は得られません。
また,変換結果は10ビットになるので,これを以下のように8ビットに変更する必要があります。
CS+のコード生成を使っていれば,main関数がスタートした時点ではA/Dの初期設定は完了しています。
A/D変換を開始(R_ADC_Start関数を呼び出す)したら,変換完了を待つ必要があります。完了を待つには,
ベクタ割り込み(INTAD)を使って,r_cg_adc_user.cの中の割り込み関数r_adc_interruptの中で変換結果を
ADCRHレジスタから読み出すか,ベクタ割り込みを禁止して,割り込み要求フラグ(ADIF)をポーリングすることで
A/D変換完了(ADIF=1)を待ち,ADIFが1になったら,ADCRHレジスタを読み出します。(8ビットモードなら,結果を
シフトする必要がなく,ADCRHレジスタを読み出すだけです。)
main関数の中だけで処理をクロ-ズさせるのであれば,ベクタ割り込みは禁止しておき,A/D変換を開始し,
A/D変換完了を割り込み要求フラグ(ADIF)をポーリングすることで待ちます。
この部分は以下のようになります。ここでは,adc_valueはポインタではなく,変数にしています。
これで,変換結果がadc_valueに入るので,後は変換結果を使った処理を記述ればできるはずです。
A/D変換は連続して行われるので,whileループで変換完了待ちから繰り返すだけで十分です。
こんにちは。NoMaYです。私は、もっぱら、リプライする時でも"Use rich formatting"モードに切り替えて入力しています。(新規投稿時に入力しているのが、実は、このモードですね。) このモードではコピペした場合でもインデントが保持されています。この"Use rich formatting"モードで慣れが必要かと思うのは、キーボードの単体のEnterキーの入力が『行を改める』ではなく『段落を改める』という意味になることです。他方、コピペしたテキストに含まれる改行は、普通に改行として扱われることです。テキストをコピペして、そのテキストを修正しようとした時に改行を入れなければならなくなった時には、Shift+Enterキーを入力します。(もっとも、これは新規投稿時の入力でも同じですが、、、)
NoMaYさん、
ご教授ありがとうございます。 もとのテーマとはずれてますがheroabeさんにも参考になったのではないでしょうか?
これは練習ついでに"Use rich formatting"モードで書き込んでます。