新しいシリーズのATtinyチップが面白そうなので、その中で今回は安価なATtiny202を選び、動かしてみたいと思います。
ATtiny202は現在秋月電子にて70円で販売され、フラッシュメモリーが2KBと小さいですが何かできそうです。
私はArduino IDE 2.x.ではコンパイルはできても書き込みが出来ませんでしたので、Arduino IDE 1.8.19を使いました。今現在Arduino IDE 2.3.3の最新ヴァージョンでは書き込みができます。
今回もチャトgptで質問してみましたが目新しい情報は出てきませんでした。
ATtiny202概要
今回扱うATtiny202は、フラッシュメモリが2KBのtinyAVR 0シリーズのチップで8ピンです。
また表面実装タイプ(SOIC)のチップなので非常に小さく、ブレッドボード等で使用するにはピンピッチを変更するDIP化基板が必要となってきます。
ブートローダーやスケッチの書き込みには、以前のチップと違い単線接続のUPDI(Unified Program and Debug Interfac)が使われ、配線が非常に簡単になりました。
ATtiny202のピン配列です。
仕様
電源電圧:1.8~5.5V ・コアサイズ:8bit ・命令長:16bit ・クロック:20MHz
プログラムメモリ:2kB ・EEPROM:64B ・RAM:128B ・GPIO:6pin
ADコンバータ:6Ch ・UART/USART:1Ch ・I2C:1Ch ・SPI:1Ch ・タイマ:2Ch(16bit×2)
パッケージ:8SOIC
下が秋月電子で購入したDIP化基板に乗せた202で、小さいので半田付けが難しですが、半田吸収線を使うと割と簡単にできました。
Arduino IDEの設定
Arduino IDEからATtiny202にプログラムを書き込むには、UPDI書き込みに対応したATtinyボードパッケージのmegaTinyCoreのインストールが必要となります。
インストールの方法を説明します。
まず、Arduino IDEの「環境設定」から追加の「ボードマネージャのURL」に以下の図のようにURLを貼り付けます。
下が貼り付けるURLです
http://drazzy.com/package_drazzy.com_index.json
次にボードマネージャmegaTinyCoreをインストールします。
1,2と進みボードマネージャーが表示されますので、次に
attiny 入力してmegaTinyCoreを見つけてインストールします。
とりあえずおしまいです。
書き込み装置
UPDIの書き込みは主に、jtag2updiを使う方法とUSB-シリアル変換モジュール使方法がありますが、今回は簡単に書き込み環境が構築できるUSB-シリアル方式で行います。
揃えるパーツ
- ATtiny202(秋月電子で2023年9月現在70円)
- USB-シリアル変換モジュール(アマゾン販売されてるFT232RL、秋月電子販売されてるCH340E FT234X)などどれか1つ
- ショットキーバリアーダイオード(普通のダイオードでも大丈夫です)
- ミニブレッドボード
- 470Ωの抵抗1つ
- ブレッドボードジャンパーワイヤー数本
- Lチカ用のLED
- 1KΩの抵抗
配線図
今回はアマゾンで購入したFTR234RLを使いましたが、こちらのチップはWindowsパソコンに接続して何もせず簡単に認識します、チップによってはUSBドライバーのインストールが必要になることもあります。
下図のように配線します、UPDIは6番ピン、ショットキーバリアダイオードはRXDとTDXに繋ぎます。(ショットキーバリアダイオードでなく、普通ダイオードでも大丈夫です)
スケッチを書き込む
スケッチを書き込んでテストしてみます。
上記の図のATtiny202の7番ピンD4に接続したLEDを点滅させます。
IDEのボード、シリアルポート、書き込み装置、設定
ボードの設定です。
[ツール]→[ボード]→[megaTinyCore]の中から書き込む対象チップを選択します。
今回ATtiny202に書き込むので「ATtiny412/402/212/202」になります。
次にchip ATtiny202を選びます。
Clock は20Mデフォルト。
次にシリアルポートの設定です。
FTR234RLが接続されているCOMポートを確認して設定します、今回はCOM10でした。
最後に書き込み装置に指定です。
選ぶのは安全のためSerialUPDI-SLOWです、しかしUPDI230400でも問題なく書き込めました。
他の設定はデフォルトで。
Lチカ
下記のスケッチを書き込むとLチカします。
void setup()
{
pinMode(4, OUTPUT);
}
void loop()
{
digitalWrite(4, HIGH);
delay(1000);
digitalWrite(4, LOW);
delay(1000);
}
問題なく動いています、2kBバイトとプログラムメモリーが少ないですが、次回何か使えるものを作ってみたいと思います。
単線接続のUPDIは配線もすごく簡単ですので試してみてください。
追伸
最初ヒューズビットを書き込むために、ブートローダーの書き込みが1度だけ必要、と書いてあるサイトがありますが私は必要ないと思います。
書き込途中メッセージが(抜粋)下記のように表示されます。
最初の部分は削除してあります。
Writing literal values…
Verifying literal values…
Action took 0.19s
Finished writing fuses.
Chip/Bulk erase,
Memory type eeprom is conditionally erased (depending upon EESAVE fuse setting)
Memory type flash is always erased
Memory type lockbits is always erased
…
Erased.
Action took 0.06s
Writing from hex file…
Writing flash…
[==================================================] 8/8
Action took 0.71s
Verifying…
Verify successful. Data in flash matches data in specified hex-file
Action took 0.16s
これを見ると、ヒューズビットが毎回書き込まれるのではないかと思われます、間違っていたならばごめんなさい。