ATtiny202にArduino IDE 1.8.19で書き込む

arduino

新しいシリーズのATtinyチップが面白そうなので、その中で今回は安価なATtiny202を選び、動かしてみたいと思います。
ATtiny202は現在秋月電子にて70円で販売され、フラッシュメモリーが2KBと小さいですが何かできそうです。
私はArduino IDE 2.x.ではコンパイルはできても書き込みが出来ませんでしたので、Arduino IDE 1.8.19を使いました。
今回もチャトgptで質問してみましたが目新しい情報は出てきませんでした。

ATtiny202概要

今回扱うATtiny202は、フラッシュメモリが2KBのtinyAVR 0シリーズのチップで8ピンです。
また表面実装タイプ(SOIC)のチップなので非常に小さく、ブレッドボード等で使用するにはピンピッチを変更するDIP化基板が必要となってきます。
ブートローダーやスケッチの書き込みには、以前のチップと違い単線接続のUPDIUnified 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

これを見ると、ヒューズビットが毎回書き込まれるのではないかと思われます、間違っていたならばごめんなさい。

タイトルとURLをコピーしました