tinyAVR0シリーズを触る
AVRマイコンの8bitに新しいシリーズとして出てきたtinyAVR0、位置づけとしては従来のATTINY10や85にあたるシリーズです。
DIPの設定はありませんがSOP8の設定があり、ピン数も8、14、20、24と「ちょっとした電子工作」に丁度いい感じです。
最早デファクトスタンダードとなったArduino環境には既に対応済みで、2つのリソースを導入するだけでArduinoIDEで開発可能という手っ取り早さです。
今回はこのtinyAVR0シリーズからATTNIY202を使用してArduinoIDEでLチカするまでの手順を紹介します。
今回出てくるヤツらの説明
UPDI
新しい書込み方式として採用された1線式の方式です。
簡易的にはダイオードと470Ω~1kΩ程度(諸説あり)の抵抗が1本ずつあればOKという手軽なものです。
電源含めて3線で済みI/Oも1本しか使わないので、小型のデバイスを作成する際には省スペースで大変助かります。
Jtag2updi
Arduino(互換機)やUSB‐UART(USBシリアル変換器)をUPDI搭載AVR用のJTAGもとい書き込み機にするスケッチです。ライブラリではない。
使用感としてはArduinoをブートローダー書き込み機にした感じで、サンプルを書き込んだArduinoのCOMポートを指定、ターゲットデバイスに後述のmegaTINYavrボードマネージャーから選択、書き込み機から書込み…という形で書き込みます。
雰囲気としてはtinyAVRがArduinoになるというよりは、ArduinoIDEを借りてtinyAVRに書き込んでるというところ。
megaTINYcore
AVR0、1、2シリーズのボードマネージャー。
megaなやつら(4804とか)も含まれるせいで、大きいのか小さいのかよくわからない名前になっています。
これ自体は特に操作するものでもないので説明は以上です。
具体的な手順
1.Jtag2updiを導入する
下記のURLからJtag2updiをダウンロードして解凍します。
https://github.com/ElTangas/jtag2updi/archive/refs/heads/master.zip
何故かはわからないがフォルダの構成がそのままではArduinoIDEがスケッチと見做さない状態なので中身のフォルダの名前を変更します(ArduinoIDEでは.inoファイルが同名のフォルダに入っている必要がある)。
フォルダ「jtag2updi-master」の中に入っているフォルダ「source」を「jtag2updi」にリネームします。
![](https://assets.st-note.com/img/1710665321610-C9VkUy7UYP.png)
"jtag2updi"内の"jtag2updi.ino"を開いて適当なArduinoUNO_R3に書き込みます。
![](https://assets.st-note.com/img/1710665360378-E4af20XITd.png)
以上でJtag2updiの導入は完了です。
2.megaTINYcoreの導入
通常のボードマネージャー導入と変わりありません。
メニューバーの「ファイル」から「基本設定」を開きます。
![](https://assets.st-note.com/img/1710664711281-SmGtONTkxx.png?width=1200)
下記のURLを「追加のボードマネージャーのURL」にコピペします。
![](https://assets.st-note.com/img/1710664799342-PS0fxxuitD.png?width=1200)
このままだとボードマネージャーの参照元を追加しただけなので、検索して正式に追加します。挙動的に内部的にはこういうことなんだろう。
左のツールバーの上から2番目のボードマネージャーを開いて、「megaTINYcore」で検索します。
![](https://assets.st-note.com/img/1710665030460-tOpB3EPA25.png?width=1200)
追加するとこんな具合にボードとして追加される。
![](https://assets.st-note.com/img/1710665154385-EqtssLdODF.png?width=1200)
以上でボードマネージャーの導入は完了です。
3.実際にATTINY202に書き込んでみる
下記のとおりに配線します。
![](https://assets.st-note.com/img/1710666033674-riFoH2kLED.png?width=1200)
下記のスケッチを書き込みます。
void setup() {
pinMode(0, OUTPUT);
}
void loop() {
digitalWrite(0, HIGH);
delay(1000);
digitalWrite(0, LOW);
delay(1000);
}
ボードの設定は下記の画像のとおりとしてください。
![](https://assets.st-note.com/img/1710666262964-ajtAyqZqsS.png?width=1200)
メニューバーの「スケッチ」から「書き込み装置を使用して書込む」を選択して書込みする。
![](https://assets.st-note.com/img/1710666354067-zrNtgnOSgE.png?width=1200)
LEDが点滅したら成功、上手く行かなかったら再確認しよう。といってもCOMポートかボードの設定し忘れくらいだろう。
やったね。これでものぐさな電子工作が捗るぞ!
・・・
さて、ここまで書いておいてなんですが、書込みの手間とか価格対性能考えたらSTM32C0シリーズやCH32Vシリーズが拮抗してくるというか大敗北します。
STLinkさえあれば実質Nucleoな前者と各種ペリフェラルが未だ不十分とはいえ純正JTAGが安価な後者に対して優位性がとこまであるか?…と言われるとちょっと微妙な気もしますが、Arduino互換機という体裁のためにtinyAVRを使いましょう。