はじめに
秋月のATmega168/328マイコンボードキットをPlatformIOでLチカしてみる。
かなり昔に購入したので、使用するMCUはATmega168P
。
プログラムの書き込みにはAVRISP mkII
を使用する。最近では純正品は入手が難しいっぽい。
PlatformIOの設定方法はここを参照。
プロジェクトの作成
作業用ディレクトリを次のように作成する。
$ mkdir -p ~/pio/ae-atmega168p $ cd ~/pio/ae-atmega168p
このボードはPlatformIOでサポートするボードのうちdiecimilaatmega168
に該当する。
$ pio init -b diecimilaatmega168
プログラムの作成
platformio.ini
純粋なArduino DiecimilaではMCUがATmega168
だが、今回使用するボードではATmega168P
であるため、設定を変更する必要がある。
またプログラムを書き込むためのプログラマをAVRISP mkII
に設定する。
[env:diecimilaatmega168] platform = atmelavr board = diecimilaatmega168 framework = arduino ; change microcontroller board_build.mcu = atmega168p ; change programmer to AVRISP mkII upload_protocol = stk500v2 ; each flag in a new line upload_flags = -Pusb
main.cpp
src/main.cpp
を次の内容で作成する。
#include <Arduino.h> void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); }
一般的なArduinoのLチカのコード。
AVRISP mkIIとボード、PCを接続
PCとAVRISP mkIIをUSBケーブルで接続する。
AVRISP mkIIの6ピンケーブルを、ボード上のICSPのシルクがある3x2のピンヘッダに接続する。 ケーブルの赤いほうが1ピン。
ボードは別途給電が必要なので、USBか電源を接続する。
ビルドと書き込み
次のコマンドでファームウェアをビルドする。
$ pio run
次のコマンドで書き込む。外部のプログラマを使用するのでtarget
の指定がupload
では無いことに注意。
$ pio run -t program Processing diecimilaatmega168 (platform: atmelavr; board: diecimilaatmega168; framework: arduino) -------------------------------------------------------------------------------- Verbose mode can be enabled via `-v, --verbose` option ...(snip)... avrdude: verifying ... avrdude: 928 bytes of flash verified avrdude: safemode: Fuses OK (E:F8, H:DD, L:FF) avrdude done. Thank you. ========================= [SUCCESS] Took 1.34 seconds =========================
書き込みが成功し、LEDがチカチカする。
まとめ
今回はATmega168P
を使用したが、新しいロットではATmega328P
が付属しているらしいので
適宜、MCU変更する必要がある。
また、最近ではAVRISP mkIIは純正品の入手が困難みたいなので、互換品(クローン製品など含む)を使用する場合、 別途何か手順が必要かもしれない。
ともあれ、PlatformIOでも問題なく動作させられることがわかった。