まだまだ続く。けど夏休み中に終わらせるのは無理っぽい。
http://squeuei.hatenablog.com/entry/2016/08/15/001834squeuei.hatenablog.com
Chapter 6
ボタンスイッチをマイコンのデジタルIOに接続する時は、プルアップ抵抗を使うこと。プルアップ抵抗はボタンがオープンの時にレベルを確実にハイにするために必要な抵抗。ただし、AVRの場合は全てのピンにプルアップ抵抗が組み込まれていて、設定で有効化できる。
Chapter 2で言及したように、DDRxが0(入力)のとき、PORTxはプルアップの設定になる。
プッシュボタンを使うときのチェックリスト
- DDRxレジスタを入力にする。
- プルアップのために抵抗素子を使わない時は、PORTxで内蔵のプルアップを有効にする。
- コードの中でボタンの電圧を読む。
- ボタンが押されてる間に何かをしたいのか、ボタンが押されたときに何かをしたいのかをヨーク考える。
- ボタンが押された時に何かをしたいのなら、デバウンシングすることを考える。たとえば一度押されたことを確認して、さらに一定時間後にも押されてたら、そのとき初めて何かを実行する、のような。
Chapter 7
LDRについて
LDRを使う際、組み合わせる抵抗は
で決定するのがよい。
ADCを使う時の注意
アナログ回路設計のグッドプラクティスとしては、高速なスイッチングがあり、スパイクが乗るチップと、性格で安定した値が要求されるADCとで、独立した電源を供給するのが望ましい。特に、小信号や高周波信号を扱う時には重要となる。
- AVCCに給電した? システムのVccからの差は0.3 V以内でなきゃダメ。
- ADMUXのREFSxを設定した? デフォルトではAREFの外部電圧を基準とする。AVCCを基準にしたいのならREFS0をセットしないといけない。
- ADCのプレスケーラを設定した? ADCにはクロック源が必要。
- ADENを設定してADCを有効化した?
- マルチプレクサで正しいchを選択した? 設定はbitじゃなくてbinaryだよ?
- 最後に、ADCの値を別々に読むときはADCL(下位ビット)から読み込んでる? 10bit読むときはADCLを読み込んでからじゃないとADCH(上位ビット)は更新されないよ?
上記の設定をしてから、ADCSRAのADSCを設定することで、ADCは変換を開始する。
ADCSRAのADATEを有効にしてフリーランニングを使う時も、最初の一回はプログラマがADSCを設定しなきゃいけない。
ADLAR=0のときはADCHの下位2ビットとADCLの8ビットがADCの出力となる。
ADLAR=1のときはADCHの8ビットとADCLの上位2ビットがADCの出力となる。
ADMUXでマルチプレクサを設定するときは、上位4ビットの値を保ったまま、下位4ビットを設定しなきゃいけない。 よくやるのはこんな感じ。
ADMUX = (0xf0 & ADMUX) | channel;