AE-ATMEGA328-MINI
2019.06
秋月電子通商にて購入
現時点で¥780でした。
マイコンボードとしてはかなり安価です。
チップは ATMEGA328 16MHzです。
このボードにはUSBインタフェースが搭載されていません。
従って、レベル変換器を通す必要があります。
今回は、ADM3202を接続しています。
レベル変換用ICは115kbpsでも問題ないものを選定しています。
ArduinoのDTR端子は入力端子で、レベルが H -> L または L->H に変化するたびにArduinoをリセットします。
今回はDTRを接続していますが、Arduino IDE の書き込み時は、DTRでもRTSでも大丈夫です。
また、テスト用にシリアルSRAMとLEDを接続しています。
外部から5Vを供給するため、J1のジャンパーをカットします。
Arduino基板のVinではなく、5.0Vから電源を供給します。
Vinから電源を供給する場合は、J1のパターンカットは必要ありません。
消費電流は、この回路構成で約20mAぐらいでした。
他にI/O回路を増設すれば、もっと増えるかもしれません。
23LC512-I/P(Microchip)を使用しています。
これも秋月電子通商で\170です。
メモリ容量は64kBです。
/CS をHにしないと、スタンバイモードにはなりません。
インタフェースは、SPIです。
設定により、2ビットモード、4ビットモードも使用可能です。
ArduinoにはSPIインタフェースがありますので、それを利用します。
/CS をHにすると、消費電流は 4uA 程度になります。
/CS がLだと、SRAMアクセス無しでも 約1mA(5V時実測値)の電流が流れます。
Arduino の SPIインタフェースをそのまま利用した場合、デフォルトでSCKは4MHzになります。
SPIで
[コマンド]
[アドレス 上位8bit]
[アドレス 下位8bit]
[データ]
の順でデータを書き込みます。
読み出しも同様です。
以降、データを連続することにより、連続アドレスで読み書きすることができます。
Arduino基板にSRAMのバックアップを接続する場合、注意が必要です。
SSに/CSを接続した場合、バッテリーバックアップ時にSS端子に電流が逃げていきます。
従って、電池がすぐに放電してしまいます。
そこで、 間にトランジスタを挿入することで漏れ電流を防ぐことができます。
ただし、トランジスタを挟むことで、/CSの極性が反転します。また、信号が遅延します。
信号が遅延し、/CSよりも先に、SCKが動作してしまいます。
したがって、標準のSPIライブラリを使用することができません。
SPIライブラリを改変すれば動作可能ですが、Arduinoにまだ空き端子があるので、
別のデジタル出力ポートを用意し、SPIアクセスする前に/CSをSS2にて制御するようにします。
SS端子は、空き端子とし、SS2で制御することによりSPIライブラリを標準で使用することができます。
/CSとSCKのタイミング
SCKとSOのタイミング
SCKの立ち上がりでデータを読み込みます。