231 や 671 などでアナログ回路が接続されているピンの MPC.PxxPFS の ASEL はいつ 1 にすれば最適でしょうか?
1. リセット解除直後、できるだけ迅速に (MSTPCRA や S12AD の初期化より先)
2. リセット解除直後 (は ASEL=0 のままとし) MSTPCRA や S12AD や S12AD1 の初期化一式が完了後
言い換えると
・回路的にデジタル入力としては中途半端な電圧がかかってしまう状況で ASEL=0 な時間が長時間あってよいか否か?
・その状況でデジタル入力部に貫通電流が流れないか?
・ S12AD のモジュールスタンバイ解除前に ASEL=1 にしてよいか(ハード的・ソフト的・両方の意味で)
という疑問です。
入力回路のところの 3入力OR は中途半端な電圧で問題ないか?
※ 231 や 671 ではほぼすべての入力端子がシュミットトリガ動作になっているので問題なさそうな気がしてきた・・・
62N とか 63T だとどうだったけ?
(この構成図だと ASEL=1 かつ PCR=1 は厳禁っスね)
他にご意見も出てこないようなので現ソースコードの実装のままとしておきます。
・リセット解除直後はハードウエアで ASEL=0 に初期化済み、を維持したまま
・外付け水晶振動子の駆動を開始する(発振安定には数ミリ秒を要する)
・ MSTP / S12AD の初期化を行う(他の周辺回路の初期化も行う)
・各種初期化の最終段階で ASEL=1 を実施
ちなみに現回路はごく単純に AVCC と VCC は同一3端子レギュレータにて供給し温度センサーである NTC と直列固定抵抗が ANxxx ピンに直結です。 tf さんの言うところの (1) → (2) → (3) 動作であって、回路側でリセット解除前に中間電圧がピンにかかる(待ってくれない)っス。コスト的に「待たせる回路」とか入れられないです。
まあ、問題ない使い方だと思います。
センサがNTCサーミスタなら、例えば
Pxx(I/O端子)ー R -- NTC --GND
の様な接続として、測定の時だけI/OをHにする(部品点数は増えない、ポートは1つ潰れる)という手もあるかな?(消費電流も多少減らせる)
NTC の自己発熱が問題になる案件だとそれやりました。ノイズ対策用の積分回路とか入っていると通電後の A/D 変換開始時間をタイマーで遅らせないと何拾っているかわからないという罠が。かと言って長時間通電すると自己発熱ががががが。
Pxx として AVcc 系を選ばないとマズイとか、そうすると ANxxx として使える端子数が半分になっちゃうとか、簡単そうに見えて落とし穴多いっス。
P03,P05,P07ならA/D変換端子を消費しません。
1本のI/Oで8本のセンサを駆動すると、10kΩのNTCサーミスタとR=10kΩなら、総抵抗=2.5kΩを1本のI/Oざっくり50ΩでON/OFF。約2%程度の誤差がでますが、必要な精度によっては&予め(試算出来る)誤差を計算で補正すれば、使い方に拠っては許容範囲かも。
(原理的に、とあるセンサの測定値が他のセンサの測定値に影響を与える方式になりますので筋の良い手法ではありませんが)