• ベストアンサー

AVR マイコンプログラミングについて

atmega168pを用いてavrマイコンプログラミングをしています。 ad変換をマイコンの機能を使って行おうと思いプログラムを書いていたのですが、 DIDR0というデジタル入力禁止レジスタというものがどういう効果を持つのかがわかりません。 mega88pというatmega168pのPDFの163ページに解説があったのですが、いまいちなんのことなのかわかりません。このレジスタをHigh、またはLowにすることでどのような効果が生まれるのかを教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
noname#195576
noname#195576
回答No.1

>■ ビット5~0 - ADC5D~ADC0D : ADC5~0 デジタル入力禁止 (ADC5~0 Digital Input Disable) >このビットが論理1を書かれると、対応するADCnピンのデジタル入力緩衝部が禁止されます。 >このビットが設定(1)されると、対応するポート入力レジスタのビット(PINx)は常に0として読みます。 >アナログ信号がADCnピンに印加され、そのピンからのデジタル入力が必要とされない時に >デジタル入力緩衝部での消費電力を削減するため、そのビットは論理1を書かれるべきです。 >ADCピンのADC6とADC7はデジタル入力緩衝部を持たず、従ってデジタル入力禁止ビットの必要が >ないことに注意してください。 アナログ入力PINはマルチファンクションによりデジタル入力回路へも繋がっていて、 アナログ入力信号を与えたとき、デジタル入力回路側へも電流が流れてしまう。 信号源のインピーダンスが高ければ信号波形にも影響するでしょう。 "1"をセットすると、このデジタル回路への電流を遮断し、消費電力も軽減する。 という事でしょう。

関連するQ&A

  • AVRマイコンの書き込みについて

    最近Atmel studio6と言うソフトとArduino IDEと言うのが調べれば調べるほど ごちゃ混ぜになって、何が何だか分からなくなってきました。 どこが同じで、どこが違うのでしょうか。 AVRマイコンのAtmega328p-puにAtmel studio6で書き込む様に書いてあるので、AVrisp mkIIというライターを買いましたが、別の記事を見たらブートローダー というソフトをあらかじめインストールして置かないといけないとか 他の記事に書いてあったのですが。 AVRマイコンに関しては、まったくど素人で分かりませんので教えてください。

  • AVRマイコン ビルドエラー

    AVRマイコンを #include <avr/io.h> int main(void) { DDRD =0b11111111; PORTD=0b11111111; } で、ビルドしようとしているのですが、 ../test3.c:0: error: MCU `atmega88p' supported for assembler only と、その後に ../test3.c:5: error: `DDRD' undeclared (first use in this function) 等と、エラーが出てビルド出来ません。 どうすればいいのでしょうか? 回答お願いします。

  • AVR Studio 6.2で書き込みができない

    現在AVR Studio6.2でATmega88Pマイコンのプログラミングを行っています。JTAGICE3を使用してリアルタイムデバッグをおこなっていました。一旦Device Programming機能でファームウェアをATmega88に書き込もうと思ったのですが、ATmega88とJTAGICE3の接続を確認するため、Device signatureを読み取ろうとしたのですが、次のようなエラーが出てきます。 Unable to enter programming mode. Please verify device selection,interface settings,target power and connections to the target device. Look in the details section for more information. たぶんなんですが、今までデバッグを行っていたので、デバッグのヒューズビットがONの状態になっているため、書き込みモードに移行できていないと思われるのですが、 AVR Studio4の場合はデバッグモード時にデバッグモードを無効にする機能があったと思うのですが、Atmel Studio6.2ではこの機能はありますでしょうか? http://d.hatena.ne.jp/oibore_shinsuke/20130421/1366530168 こちらのサイトの方も同じような症状を言っているように思うのですが、こちらの方法をやってみましたが、私の場合は解決できていません。 どうぞ、ご教示頂きますようよろしくお願い致します。

  • H8マイコンでled制御

    H8/3052FのマイコンとAKI-H8-USBのキットを使用しています。 ledを制御する際に、通常はportのデータレジスタの該当ビットをlow(0)にしたときに消灯、high(1)に点灯となると思うのですが、 なぜか逆になります。つまりlowレベルのとき点灯します。 他に接続しているスイッチも逆になっているみたいです。 回路の組み立てがおかしいのでしょうか? 理由が分からず悩んでいました。 よろしくお願いします。

  • H8S2368マイコンのTCSR_1レジスタの4ビット目が1のはずなのに0と表示される。

    いま、H8S2368マイコンのプログラムを作っているのですが、 TCSR_1レジスタの値を printf("data:%X addr:%p\n\r", TMR1.TCSR.BYTE,(void*)&TMR1.TCSR.BYTE); このプログラムでリードしてみて、UART通信で受信したところ ”data:C0 addr:ffffb3” このレジスタのデータが0xC0というのを確認しました。 このH8S2368マイコンのデータシートの502ページ目(rjj09b0162_h8s2368.pdf)では、このレジスタの4ビット目はリザーブビットで、リードすると必ず”1”が読み込まれると書かれているのですが、なぜかそのビットが”0”で帰ってきます。 ”0xD0”ならばわかるのですが、これはなぜなのでしょうか?

  • 圧力センサからの計測値の取り込みについて2

    圧力センサからの測定値をアナログ形式でAVRマイコンに取り込みたいと考えているのですが、ハード設計の方は初心者です。 先日このサイトの回答者様から設計のご指導を頂き、自分なりにハード設計してみました。 もし過去に設計経験がある方がいらっしゃいましたら、回路の間違い、回路の解説(抵抗の乗数の決め方等)をご指導頂けますか? よろしくお願い致します。 圧力センサ:http://copal-electronics.info/jp/00182/p2000_ja.pdf オペアンプ:http://akizukidenshi.com/download/ds/analog/AD8506.pdf

  • マイコンのエミュレータについて

    現在E8エミュレータを使ってマイコン(H8tyni 3687)のデバッグを行おうとしております。 しかしプログラム上にブレークポイントをいくつか置いてデバッグをする際に、1つ目のブレークポイントまでは正常にプログラムが停止するのですが、2つ目のブレークポイントまでプログラムを実行させると、プログラムが停止することなく、固まってしまいます。 1つ目のブレークポイントから2つ目のブレークポイントまでのプログラムで無限ループに入っているのかと思い、1つ目のブレークポイントを削除し、リセットから直接2つ目のブレークポイントまでプログラムを実行させると、正常にプログラムが停止します。しかし次のブレークポイントまで実行させるとまた固まってしまいます。 他の製品にも同じマイコンを使用しているものがあるため、そちらに今回のプログラムをダウンロードしE8エミュレータをつないだところ、特に問題なく1つ目のブレークポイント、2つ目のブレークポイントでプログラムが停止します。 今回問題が発生している基板でエミュレータとマイコン間の波形をオシロで確認したところ、1つ目のブレークポイントから2つ目のブレークポイントまで実行するときに、マイコンのP86(42ピン)が途中まで信号を出力して、突然Lowになってしまいます。(正常なときは信号を出力し終えた後はHighになります。) ちなみにP86(42ピン)はマイコンからエミュレータに対して信号を出力するポートです。 このような現象をご経験された事がある方や、何かお気づきになられた方がいらっしゃいましたら、どのような事でもかまいませんので、ご教授ください。 よろしくお願いいたします。

  • uPD78F0730 P12端子がローのならない不具合

    uPD78F0730 P12端子がローのならない不具合 uPD78F0730 P12端子をLowに使用と思い下のプログラムにしましたが、 ローになりませんでした。(1.83V)マイコンが壊れているのでしょうか。 #pragma SFR void main(void){ P1.2 = 0; //P12をLOWへ設定 PM1.2 = 0; //P12を出力モードへ } VDD=5V,ハイにはなります。

  • Atmel Studioでdelay関数でエラー

    現在Atmel Studio6.2でATmega88のプログラミングをやっています。 LEDを1秒間隔で点滅させるプログラムをやってみてます。 http://sourceforge.jp/projects/cc1101driver/scm/svn/tree/2510/branches/CC1101_source_ATmega88_AVRS6/AVRGCC1/ このプログラムでdelay関数として #include <util/delay.h> このヘッダーファイルをインクルードして int main() { hw_setup(); while(1) { B_CTL_HIGH; _delay_ms(1000); B_CTL_LOW; _delay_ms(1000); } } このようなプログラムを組んで見たところ次のようなエラーが出てきます。 (エラー内容) Error 1 __builtin_avr_delay_cycles expects a compile time integer constant c:\program files (x86)\atmel\atmel toolchain\avr8 gcc\native\3.4.1056\avr8-gnu-toolchain\avr\include\util\delay.h 163 28 CC1101_ATmega88 このエラーの解決方法をご教示頂きますよう、お願い致します。

  • Octal D-type transparent latch;とかいう部品の挙動について

    度々すみません。また電子回路のことでどなたかご助言下さい。 http://www.datasheetcatalog.com/datasheets_pdf/7/4/H/C/74HCT573.shtmlのDownload 74HCT573 datasheet from Philipsから74HCT573をダウンロードできます。この部品Octal D-type transparent latch; 3-stateとかいうらしいです。質問はこのデータシートの4ページの中段に書いてある説明です。「h = HIGH voltage level one set-up time prior to the HIGH-to-LOW LE transition」=「h = LEがHIGHからLOWへ移行する前に一度セットアップ(リセットのこと?)される時に電圧レベルがHIGHになる」と訳したのですが、これの意味するところがよく分かりません。それと、「enable and read register(レジスタ(メモリのようなもの?)を使用して命令を読み込む時?)」と「latch and read register(レジスタから命令を取り出して読み込む時?)」の違いが分かりません。それと4ページの下の方の図ですが、/OEがLOWになり、かつ/LEがLOWになった時のみDとQをつなぐ(つまりInputのDがHIGHならOutputのQもHIGH、LOWならLOWにする)部品と解釈してよいのでしょうか?これに類似した部品で74HCT574ってのもあるんですが、そちらはCPがHIGH、LOWを繰り返すみたいなんです…。この両者の使い方の違いもいまいち理解できないのです…。質問が多すぎてすみません。分かる範囲でご教示下さい。

専門家に質問してみよう