最近、空き時間にAVRマイコンで遊んでいるのですが、Arduinoボードのように周辺機器や回路を満載せず、最小構成で動かしたいと感じることがあります。
Arduinoボードには、USB-シリアル変換インターフェース、5Vおよび3.3V定電圧電源、水晶発振子やセラミック発振子、電源LEDやD13ピンの"L"と書かれたLEDなど、開発のために便利な周辺部品が多数搭載されています。
ですが、AVRマイコンの電力管理機能を試したり、電源電圧やクロック周波数を変えてマイコンを駆動させたい場合など、これらの回路が邪魔になることがあります。
そのような場合に、少なくともどのような回路構成を組めばマイコンが動作するのか理解しておけば便利です。
今回は、ブレッドボード上に以下の図のような部品配置で回路を組みました。
接続箇所のピンアサインは以下の通りになっています。
1. PC6 (PCINT14/RESET)
7. VCC
8. GND
20. AVCC
22. GND
1番ピンのPC6は、Fuse bit で特に設定しない限り、リセットピンとして使われます。(この設定を変更してしまうとマイコンにプログラムが書けなくなりそう?)
10キロオームのプルアップ抵抗を介してVCCレベルの電圧に接続され、通常はHIGHのレベルで使用します。このピンをGNDに接続してLOWレベルの電圧に落とすと、マイコンがリセットされます。通常はタクトスイッチなどをつなげてリセットできるようにします。
7, 8番ピンは電源用のピンです。本来は0.1μF程度のパスコンをつなぎます(なくても一応動きます)。
20番ピンはA/D Converter用の電源ピンです。一見、A/D変換を使わない場合は繋ぐ必要がないようにも思えますが、データシートによると "It should be externally connected to VCC, even if the ADC is not used." (意訳: 「A/D変換が使用されない場合も、この端子をVCCへ接続すべきです。」)と書かれているので、A/D変換を使用する・しないに関わらず、電源への接続が必要です。
22番ピンはよくわかりません。多分、20番ピンまたは21番ピン(AREF)と対になるGNDな気がします。私が持っている秋月のAE-ATmegaボードでは22番ピンもGNDに落としてあるので、私もそのとおりにしています。
ATmega328Pには、内部クロック源として、8MHzの校正済みRC発振回路と、128kHzのWDT用発振回路の2通りがあります。これらを利用することで、水晶発振子やセラミック発振子などを別途搭載することなくマイコンを駆動できます。また、クロックを1/8に分周する回路も搭載されており、すべてのクロック種別においてオンオフの切り替えが可能です。
マイコンにICSPでプログラムを書く際は、以下のピンアサインが使用可能です。
1. PC6 (PCINT14/RESET)
17. PB3 (MOSI/OC2A/PCINT3)
18. PB4 (MISO/PCINT4)
19. PB5 (SCK/PCINT5)
プログラムの書き込みには、AVRISPや各種USBシリアル変換IC、Arduino as ISPなどが使用可能です。
参考元(Microchip社のデータシート)
https://ww1.microchip.com/downloads/en/DeviceDoc/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061B.pdf