先日の↓
http://brown.ap.teacup.com/nekosan0/210.html
「外部リファレンスの参照も対応していたんですね。」
で書いたことについて、もうちょっと調べてみました。
通常のmega168(やmega88、mega48)を電源オン
した時と、arduinoでコンパイルしたプログラムを
実行した時、デフォルトでそれぞれ内部レジスタが
どのように設定されるかについてです。
arduinoについては以前書いたように、DEFAULT
として内蔵5Vが参照電圧として適用されますが、
mega168のデータシートを読むと、デフォルトは
AREF端子入力からの参照電圧となっています。
通常mega168で独自のプログラムを組む場合、
AREF電圧では無く内蔵参照電圧を使う場合には
明示的にレジスタを設定しないとならない
のですが、arduinoの場合は「簡単に使える」
ということが優先されたのか、DEFAULTで
内蔵参照に設定されてしまっています。
このことが厄介を呼んでいるようですね。
ちなみに、データシートをちゃんと読むと、
251ページの「23.5.2 ADC Voltage Reference」
の項目に
・AREFに外部参照用の機器を繋いでいる時は、
ショートしちゃうので他の参照用オプションは
使用できません。
と書いてありました。ちゃんとデータシート
読まないといけませんね(´o`)。
ちなみに、AREF端子がわざわざこういう特殊な
繋ぎ方になっているのは、1.1Vや5Vの内蔵参照電圧
を使うときにでも、AREF端子とGNDの間にパスコンを
入れることで参照電圧からノイズを取り除く事が
出来るようにという配慮みたいです。
それにしてもarduino。
一切外部参照電圧を使うことは出来ない仕様と
考えるのが自然でしょう。
なぜそういう方針にしたんだろう???
|
|
|
|
|
|