mbed LPC824はinputがデフォルトでプルアップされている。プルアップ抵抗を追加しなくていいから便利なのだが問題がある。

mbed APIにおけるDigitalInクラスでは、コンストラクタで、

DigitalIn sensor( P0_6, PullNone );

のようにピンモードを指定できるし、mode()メソッドを使って、

sensor.mode( PullNone );

ともできる。
ちなみに、指定できるモードは以下の通り。

PullUp, PullDown, PullNone, OpenDrain

このようにDigitalInでは何の問題もないのだが、アナログ入力が問題だ。
AnalogInクラスにはこのピンモードを設定するメソッドがない!! なぜだ。。。。
mbedのサイトを見ると、

Warning

一部のCPUのmbedライブラリについて、アナログ入力ピンの内蔵プルアップ/プルダウンがONになっているものがあります。(意図してか、意図せずか不明)
この場合、ドライブ能力の低い電圧源や、抵抗器を介したアナログ入力の値がおかしくなります。

ピンモードを設定しているレジスタを直接アクセスして、プルアップ/プルダウンをOFFにしてください。

https://os.mbed.com/users/okini3939/notebook/AnalogIn_jp/

と書かれている。なんとも面倒な。レジスタを触るのか。
しかしレジスタを触らなくてもうまいことハックできちゃった。
つまり、いったんDigitalInで目的のピンをPullNoneで設定しておいて、再度同じピンでAnalogInを生成する。するとPullNoneなAnalogInが出来上がる。

DigitalIn dummy( P0_6, PullNone );
AnalogIn sensor( P0_6 );

これで動いたさ。