100ピン以上には10bitAD変換器と12bitAD変換器の2つが載っている。
端子機能の名前がAN○のように、数字が一桁のものが10bit、AN00○のように3桁のものが12bitである。
特に10bitを使うメリットはないので、10bitを使う場合は12bitの数が足りなくなったときくらいだろう。
バッテリ電圧を測るために大きい抵抗で分圧してしまうとノイズが乗ってしまう。
合わせて10kΩ以下に抑えよう。
AD変換値が揺れる場合、A/D サンプリングステートレジスタの値を大きくすると改善する場合がある。
ただし、この数字はAD変換中に待つ時間なので、AD変換にかかる時間が伸びることになる。
プリント基板を設計する際、モータドライバなど大電流が流れる部品とはGNDを分け、バッテリのコネクタ部分でGNDを繋げるようにするとよい。
さらにノイズを減らしたい場合は
アナログベタ(マイコンのアナログGND端子、フォトトランジスタの負荷抵抗のGND)
モータベタ(モータドライバのGND)
デジタルベタ(その他)
の3つに分けよう。
モジュールストップ解除(MSTP_S12AD = 0;)
AD変換停止(ADCSR.BIT.ADST)
動作周波数設定(ADCSR.BIT.CKS)
シングルスキャンモードに設定(ADCSR.BIT.ADCS)
サンプリング時間設定(ADSSTR01.BIT.SST1)
チャンネル選択(ADANS0.BIT.ANS0)
AD変換スタート(ADCSR.BIT.ADST)
AD変換が終わるまで待つ(AD変換が終わるとADCSR.BIT.ADSTが0になる)
AD変換値を格納する