VSCode + PlatformIO の用意
ATtinyはAtmelが開発したAVRと呼ばれる8bit RISCのマイコンです。
AVRの一種であることからメジャーなATtiny(ATtiny85やATtiny402など)はArduinoIDEに対応しています。
しかし本稿のターゲットとしているATtiny406はArduinoに対応していないようで利用できませんでした。
(対応していたらすみません。コメントで教えていただけると嬉しいです)
そこでVSCode + PlatformIOで開発環境を作りました。
ちなみにATtiny406をターゲットとした理由として、パッケージはFQN20のためGPIOが18本あります。
価格も100円を以下(2023/8/1時点)と安く、はんだ付けは大変ですがサイズも3mm×3mmと小さくメリットが多いです。
インストール
インストール自体はVSCodeとPlatformIOをインストールだけなので簡単です。
- VSCode のインストール
下記からインストーラをダウンロードし、VSCodeをインストールします。
https://azure.microsoft.com/ja-jp/products/visual-studio-code - 拡張機能から「PlatformIO IDE」をインストールします。
こんな感じのアイコンの機能拡張です。
ATtiny406 でLチカをやってみる
新規プロジェクト
- 画像のアイコン →「Open」をクリックして、PlatformIO のポータル画面を立ち上げます。
- 「New Project」をクリックします。
- Wizardが表示されるので、「Board」に「ATtiny406(Microchip)」を選択して「Finish」をクリックします。
「Name」は適当に、「Framword」は「Arduino」が自動選択されます。
- こんな感じでファイルが自動生成されます。
main.cpp
1秒ごとに点滅を繰り返すLチカを実装します。
出力ポートはPA1を想定しています。
#include <Arduino.h>
void setup() {
// put your setup code here, to run once:
pinMode(PIN_PA1, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
static uint8_t val = HIGH;
digitalWrite(PIN_PA1, val);
val = !val;
delay(1000);
}
platformio.ini
platformio.iniでは、書き込みルールや動作周波数について記載します。
私はSerial UPDIでしか書き込んだことがないので、他はわかりません。
そこで本稿でもSerial UPDIで書き込みます。
また書き込み速度について遅めに設定しています。(速いと失敗しました)
CPUの周波数はboard_build.f_cpuで設定しています。(今回は1MHz)
[env:ATtiny406]
platform = atmelmegaavr
board = ATtiny406
framework = arduino
board_build.f_cpu = 1000000L
board_hardware.oscillator = internal
upload_protocol = serialupdi
upload_speed = 57600
board_hardware.bod = 1.8v
board_hardware.eesave = yes
board_hardware.uart = no_bootloader
board_hardware.rstpin = reset
配線
書き込みについてはUSB-Serialアダプタを使いますが、Serial UPDIは基本的に一本のPINへ書き込むだけでOKです。
下記はスイッチサイエンスのATtiny402のボードの配線ですが、ATtiny406も一緒です。
シリアルポートのRXとTXを、マイコンのUPDIに対して下記の通り接続すればOKです。
最後に
GPIOからの読み込みや書き込みを、digitalReadやdigitalWriteを使わずに行う方法について書く予定です。
またCCLについても書いていこうと思います。
気が向いたらElecrowを使った基板発注の方法も書いていきたいです。