質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.33%
Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

解決済

1回答

375閲覧

ATtiny202へのブートローダー書き込みができません。

Sugitani

総合スコア1

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2025/01/15 04:31

実現したいこと

ARDUINO UNO R3 を使ってATtiny202にブートローダーを書き込み及びスケッチの書き込みをしたい。

発生している問題・分からないこと

ARDUINO UNO R3 を使ってATtiny202にブートローダーを書き込もうとすると、3分程書き込み中となり、エラーメッセージが出て、書き込みが出来ない。

ソフトウエア設定
ブートローダー書き込み時のARUDUINO IDE 設定
ツール>ボード>megaTinyCorea>ATtINY202
ツール>Cip>ATtiny202
ツール>書き込み装置>jtag2updi
となっています。
ハードウエア設定
ATtiny6番PIN 4.7kΩを介してARDUINO UNO R3  DIGTAL 6出力へ接続
ATtiny1番PIN Vcc 5V
ATtiny6番PIN GND
となっています。

ソフトウエア、ハードウエアとも間違いは無さそうです。

エラーメッセージ

error

1avrdude: jtagmkII_getsync(): sign-on command: status -1 2(上記メッセージが以下32行出ます。) 3avrdude: jtagmkII_getsync(): timeout/error communicating with programmer (status -1) 4Failed to burn bootloader: uploading error: exit status 1

該当のソースコード

void setup() { // put your setup code here, to run once: pinMode(4, OUTPUT); } void loop() { digitalWrite(4, HIGH); delay(80); digitalWrite(4, LOW); delay(80); digitalWrite(4, HIGH); delay(80); digitalWrite(4, LOW); delay(80); digitalWrite(4, HIGH); delay(80); digitalWrite(4, LOW); delay(800); }

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

ARDUINO IDE を再インストールした。 V2.3.4(最新版)
ATtiny202を新品に交換した。
jta2updiを再インストールした。
いずれも問題解決には至らなかった。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

一応答えておくと、UNOのGND-RESET間にコンデンサを入れていないから『かも』

それよりも言いたいのは、下記の事です。

まず、「ATtiny202へのブートローダー書き込み」はお勧めしません。
・ただでさえ少ないフラッシュメモリを圧迫させる。
・自由なピンが5つしかないのに、更にTXD、RXDを使うと、たった3ピンしかなくなってしまう。

以前、「UPDIでブートローダを書き込み」そのままのUPDIの配線で「Lチカ」を書き込み、なんていう馬鹿げたことをしているサイトが幾つもありました。現在も残っているようです。
※LチカをUPDIで書き込む行為はブートローダを消す行為でもあります。ブートローダを入れたのなら、USB-シリアルモジュールで繋ぎなおして、シリアルから書き込みをしないと意味がありません。

基本、ATtiny202なら、UPDIのまま開発にした方が良いです。
より多ピンで、フラッシュの多いものでブートローダを入れて使ってください。

次に、書き込み方法ですけど、jtag2updiはどんどん廃れていっていると『思います』
ここ1,2年で、主流になっているSerialUPDIをお勧めします。

※ブートローダを入れるにしても、通常の書き込み(開発)で「USB-シリアルモジュール」が必要になります。
一方、SerialUPDIの書き込みで必要なのは、その「USB-シリアルモジュール」と抵抗1本程度です。
無駄にUNOやNANOを使った書き込み器が要らない上に、jtag2updiよりも安定して高速で書き込めます。

<追記>
SERIAL-UPDIの書き込み回路(の1種)を付けておきます。
画像ではGNDはブレッドボードで直接接続しています。

抵抗一本の場合は、同じ場所(RXとTX間)に付けます。(UPDI-TX間ともいえるけど)イメージ説明

<さらに追記>

解決できたようで良かったです。

202や402程度なら直接書き込みで良いと思います。
もっと容量のあるものなら、ブートローダを入れた方が楽になると思います。
イメージ説明
私は、画像の自作のアダプタを使って、必要に応じてスライドスイッチでUARTに切り替えて
シリアル通信をしたりしています。なので、もっぱらブートローダは入れません。
※スライドスイッチは上がUART(シリアル通信)、中が切り離し(GPIO)、下がUPDI書き込みです。

また、SMDチップの場合は、画像のように裏にチップを付けて、見える方にピンのラベルシールを付ける事が多いです。

まぁ、その辺は好みの問題です。

投稿2025/01/17 14:17

編集2025/01/24 08:38
nac_tnk

総合スコア501

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Sugitani

2025/01/19 00:10

回答ありがとうございます。試してみましたが解決できませんでした。 ます、UNOのGND-RESET間に10μの電界コンデンサを入れ、jtag2updiで試しましたが結果変わりませんでした。 次に、SerialUPDI での書き込み7種類すべてを試みましたが結果変わりませんでした。
nac_tnk

2025/01/19 07:30

全く出来ないのなら、他に原因があるのかも。 例えば、使っている中のワイヤー1本が断線しているだけで書き込みは出来ませんよ。 ATtINY202のはんだ付けの可能性もあります。 また、USB-シリアルモジュールはどんなのを試しましたか? 私自身は、CH340系が4種、FT232が1種、CP2102が1種の計6種(何れもALIで100円程度で購入したもの)は全て可能でした。 「可能」というのはUPDIの7つの書き込み全てというわけではありませんけど、6/7程度で殆どのOKでした。 また、ショットキーダイオード+470Ωでなくても、抵抗1本でも、4148のような小さい高速ダイオードでもいけました。 (あまりに適当でも書き込めるのでテストを中断しました。その辺りなら1kΩ抵抗を1本繋ぐだけで、最高速だけ避ければ書き込めると思います) 一方、PL2302やHT42B534、或いは、UNOのUSBモジュール部(つまりD0とD1利用)では、書き込めませんでした。 そんなに深くテストはしていませんから、絶対書き込めないとは言い切れません。
nac_tnk

2025/01/19 07:47

あと、「スケッチ」-「書き込み装置を使って書き込む」で書き込んでいますか? (私も癖でついやるんだけど)『⇒』アイコンでは駄目ですよ
Sugitani

2025/01/20 00:09

はい。スケッチ>書き込み装置を使って書き込む で書き込んでいます。
nac_tnk

2025/01/20 05:00

試したのはどのUSB-シリアルモジュールでしょうか? また、試したのは抵抗1本(或いはダイオード一本)でしょうか? そして、どんなエラーメッセージだったのでしょうか? 一本の場合は接続は下記です。 5V-5V GND-GND RX-UPDI 更にTXとRXを抵抗(※680Ω~6.2kΩで実績あり)で繋ぐ。或いは(高速)ダイオードの場合はRX→TXになるように繋ぐ ※抵抗値は逆に言えば、その範囲外のサンプルを試して駄目だった、という事ですから、より中間値の1k~3kΩ程度が良いです ※公式サイトのように、「ショットキーダイオード+抵抗」の場合は、抵抗値は470Ωとか(或いは無しでも行けますけど)ですけど、 抵抗一本の場合は470Ωだと(使うUSB-シリアルに寄りますけど)多分ダメです。 ※今、気づいたのですけど。 > ATtiny6番PIN GND 6番ピン(UPDI)をGNDに繋いだら、UPIDの電圧はLOWにしかなりませんよ。 単に、8番ピン(GND)の書き間違いでしょうか?
Sugitani

2025/01/21 03:59

コメントありがとうございます。 まず訂正です。 ATtiny1番PIN → Vcc 5V ATtiny6番PIN → 4.7k→ ARDUINO UNO R3 ~6(DIGITAL) ATtIny8番PIN → GND ARDUINO UNO R3 RESET → 10μF→ GND(極性OK) で配線しています。(私の記述の間違いでした。) ご質問の回答 ①試したのは抵抗1本(或いはダイオード一本)でしょうか? >抵抗1本(4.7K)です。 ②試したのはどのUSB-シリアルモジュールでしょうか? >ツール>ボード>megaTinyCorea>ATtINY202 ツール>Cip>ATtiny202 ツール>書き込み装置>SerialUPDI-230400baud 「ブートローダーの書き込み」は飛ばしました。 ➂どんなエラーメッセージだったのでしょうか? >Traceback (most recent call last): File "C:\Users\Presi\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10/tools/prog.py", line 286, in <module> main() File "C:\Users\Presi\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10/tools/prog.py", line 128, in main return_code = pymcuprog_basic(args, fuses_dict) File "C:\Users\Presi\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10/tools/prog.py", line 201, in pymcuprog_basic args_start) File "C:\Users\Presi\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10\tools\libs\pymcuprog\pymcuprog_main.py", line 545, in _start_session backend.start_session(sessionconfig) File "C:\Users\Presi\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10\tools\libs\pymcuprog\backend.py", line 362, in start_session sessionconfig.interface_speed) File "C:\Users\Presi\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10\tools\libs\pymcuprog\programmer.py", line 83, in setup_device options=self.options) File "C:\Users\Presi\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10\tools\libs\pymcuprog\nvm.py", line 42, in get_nvm_access_provider accessprovider = NvmAccessProviderSerial(transport, device_info, baud=frequency, options=options) File "C:\Users\Presi\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10\tools\libs\pymcuprog\nvmserialupdi.py", line 54, in __init__ self.avr = UpdiApplication(port, baud, self.dut) File "C:\Users\Presi\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10\tools\libs\pymcuprog\serialupdi\application.py", line 79, in __init__ datalink.init_datalink() File "C:\Users\Presi\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10\tools\libs\pymcuprog\serialupdi\link.py", line 44, in init_datalink raise PymcuprogError("UPDI initialisation failed") pymcuprog.pymcuprog_errors.PymcuprogError: UPDI initialisation failed Failed programming: uploading error: exit status 1 以上となります。
Sugitani

2025/01/21 05:19

もう1つ伺わせてください。 ①ご回答のTXーRX間を680Ω~6.8Kでつなぐとありますが、TX、RXはどのピン番号(ATtiny? ARDUINO?)ですか? ②RX-UPDI のRXはARDUINO UNO のどこのピンでしょうか?(UPDIはATtiny202の6番ですよね。) すみません。お願いします。
nac_tnk

2025/01/21 07:48

あらら、 Serial-UPDIはUNOは使いません。 USB-シリアルモジュールをそのまま使います。 ※「USB-シリアルモジュール」でググってください。沢山のモジュールがありますけど、 CH340系やFT232をお勧めします https://www.aliexpress.com/item/1005007081543813.html とか。(↓に書いたテストはこれを使いました) ピン(TX、RX)はUSBシリアルモジュールのピンです。 で、さっき、ちょっとテストしたのですけど、TINY202は抵抗値が異なりました。 (上で書いたものは、TINY1416とかTINY1616あたりでテストした結果です) で、結果的には ○ 470Ω 680Ω 1N4148 1SS270A 1N4007 × 330Ω 1kΩ です。なので、SERIAL-UPIDでTINY202を書き込むのなら、470~680Ω程度の抵抗か、或いはダイオード、という事になります。 ただし、使用するUSBシリアルモジュールによっては抵抗値も多少かわるかも。
Sugitani

2025/01/21 09:07

コメントありがとうございます。 秋月のHPで見てみました。 FT232RQ 型番:AE-TTL-232R 販売コード:109951FT232RQ と CH340E 型番:AE-CH340E-TYPEC 販売コード:114745 で試してみます。 明日調達してきます。 ありがとうございます。 CH340Eで試してみたいと思います。
Sugitani

2025/01/23 04:20

回答ありがとうございます。試してみましたが解決できませんでした。 USBシリアル変換モジュール CH340E で試しました。 CH340EとATtiny202の接続 CH340E RXD →470(510)(680)Ω→ ATtiny202 6番(UPDI) CH340E Vcc →ATtiny202 8番ピン CH340E GND→ATtiny202 1番ピン ATtiny202 7番ピン→1kΩ→LED→GND(動作時のLチカ配線) ARDUINO IDE の設定 ツール>ボード>megaTinyCorea>ATtiny202 ツール>Cip>ATtiny202 ツール>書き込み装置> ①Serial UPDI FAST 4.5V +460800 baud(ch340 ando ・・ ②Serial UPDI FAST 4.5V +460800 baud(w/write ・・ ➂Serial UPDI 230400 baud ④Serial UPDI 230400 baud w/write ・・ ⑤Serial UPDI 230400・・ 他Serial UPDI で始まる書き込み装置は全て試しましたがダメでした。 「ブートローダーへの書き込み」は一切していません。 書き込みは、スケッチ>書き込み装置を使って書き込む で行っています。 スケッチの内容(コンパイルは問題なく無くできます) void setup() { // put your setup code here, to run once: pinMode(4, OUTPUT); } void loop() { // put your main code here, to run repeatedly: digitalWrite(4, HIGH); delay(30); digitalWrite(4, LOW); delay(800); } エラー内容 最大2048バイトのフラッシュメモリのうち、スケッチが456バイト(22%)を使っています。 最大128バイトのRAMのうち、グローバル変数が10バイト(7%)を使っていて、ローカル変数で118バイト使うことができます。 SerialUPDI UPDI programming for Arduino using a serial adapter Based on pymcuprog, with significant modifications By Quentin Bolsee and Spence Konde Version 1.2.3 - Jan 2022 Using serial port COM3 at 460800 baud. Target: attiny202 Set fuses: ['0:0b00000000', '2:0x02', '6:0x04', '7:0x00', '8:0x00'] Action: write File: C:\Users\Presi\AppData\Local\arduino\sketches\301400506347D866BDB8B7F183172C8F/CONCOURS14_FLUSH_1.ino.hex Traceback (most recent call last): File "C:\Users\Presi\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10/tools/prog.py", line 286, in <module> pymcuprog.serialupdi.physical - ERROR - Unable to open serial port 'COM3' main() File "C:\Users\Presi\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10/tools/prog.py", line 128, in main return_code = pymcuprog_basic(args, fuses_dict) File "C:\Users\Presi\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10/tools/prog.py", line 201, in pymcuprog_basic args_start) File "C:\Users\Presi\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10\tools\libs\pymcuprog\pymcuprog_main.py", line 545, in _start_session backend.start_session(sessionconfig) File "C:\Users\Presi\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10\tools\libs\pymcuprog\backend.py", line 362, in start_session sessionconfig.interface_speed) File "C:\Users\Presi\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10\tools\libs\pymcuprog\programmer.py", line 83, in setup_device options=self.options) File "C:\Users\Presi\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10\tools\libs\pymcuprog\nvm.py", line 42, in get_nvm_access_provider accessprovider = NvmAccessProviderSerial(transport, device_info, baud=frequency, options=options) File "C:\Users\Presi\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10\tools\libs\pymcuprog\nvmserialupdi.py", line 54, in __init__ self.avr = UpdiApplication(port, baud, self.dut) File "C:\Users\Presi\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10\tools\libs\pymcuprog\serialupdi\application.py", line 70, in __init__ self.phy = UpdiPhysical(serialport, baud_temp) File "C:\Users\Presi\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10\tools\libs\pymcuprog\serialupdi\physical.py", line 29, in __init__ self.initialise_serial(self.port, self.baud) File "C:\Users\Presi\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10\tools\libs\pymcuprog\serialupdi\physical.py", line 50, in initialise_serial self.ser.open() File "C:\Users\Presi\AppData\Local\Arduino15\packages\megaTinyCore\hardware\megaavr\2.6.10\tools\libs\serial\serialwin32.py", line 62, in open raise SerialException("could not open port {!r}: {!r}".format(self.portstr, ctypes.WinError())) serial.serialutil.SerialException: could not open port 'COM3': FileNotFoundError(2, '�w�肳�ꂽ�t�@�C�������‚���܂���B', None, 2) Failed programming: uploading error: exit status 1 ご助言頂きながら、なかなかうまくいかずにすみません。 よろしくお願いします。
nac_tnk

2025/01/23 04:34

接続が違います。 CH340E RXD → ATtiny202 6番(UPDI) です。つまり、VCC、GND、RXはそのままTINYに繋ぎます。 更に、『抵抗か、ダイオードでCH340EのRXとCH340EのTXを繋ぎます。』 ダイオードの場合はRX→TXの向きです。 その7通りの設定を試すのは面倒でしょうから 「Serial UPDI 230400 baud」 あたりだけを試してください。 (書き込めるものは、一番高速のCH340設定が書き込めるか否か、ぐらいの違いです。TINY202ならどれも一瞬でしょう)
nac_tnk

2025/01/23 04:42

それと、前回挙げた抵抗値は、FT232(私の使ったモジュール)での値です。 470Ω程度で駄目なら、1kΩや2kΩで試してください。
Sugitani

2025/01/23 05:30

回答ありがとうございます。試してみましたが解決できませんでした。 配線をご指示の様に変更し、抵抗を680Ωと1Kで試しましたがダメでした。 手元に1Kを超えるものが無いので明日2Kで試してみます。
nac_tnk

2025/01/23 08:03

持っているCH340E(それとは別のモジュール)で試したのですけど、 ○ 470~3.9k、1N4148、1SS270A × 330,6.2k という結果になりました。1kΩなら問題無く書き込めて良さそうなんですけどね。 問題はそこ(抵抗値)では無いのかもしれません 因みに、使ったのは https://www.aliexpress.com/item/32831329095.html です。
Sugitani

2025/01/23 09:09

手元に680Ωの抵抗がありましたので、3本直列につなぎ2Kで試しましたが結果変わりませんでした。
Sugitani

2025/01/23 09:44

ARDUINO IDE で ツール>シリアルモニター>を選択すると、 「接続されていません。自動的に接続するには、ボードとポートを選択してください」 とのメッセージが出ます。 また、ARDUINO IDE で ツール>ボード情報取得>を選択すると、同様に、 「接続されていません。自動的に接続するには、ボードとポートを選択してください」 とのメッセージが出ますがこれは正常でしょうか?
nac_tnk

2025/01/23 11:17

USB-シリアルを繋いだCOMポートを選択していますか? > could not open port 'COM3' ていうか、上ではCOM3を選択しているようですけど、USBシリアルを差し込んだ後に、そのポートを選択してください。 書き込みできないような時は逆に、「(書き込みが出来ないので)ポートを閉じます」のようなメッセージが出ます。
Sugitani

2025/01/24 02:27

Arduino UNOを接続した時に、デバイスマネージャーで ポート(COMとLPT)その下にArduino Uno(COM 3)と出ますが、CH340Eを接続した場合、デバイスマネージャー上にポート(COMとLPT)そのものが現れません。 CH340Eの基板上の赤いLEDは点灯していますが。
nac_tnk

2025/01/24 02:51

ドライバが必要なのかも。秋月の販売サイトにも載っていますから、それを入れてください。
Sugitani

2025/01/24 03:08

わかりました。やってみます。
Sugitani

2025/01/24 03:45

恐れ入ります。 秋月電子のHPで、「CH340E ドライバ」で検索しても出てきませんがどの様に調べれば出てきますか?
Sugitani

2025/01/24 06:36

回答ありがとうございます。 試したところ問題が解決しました! ベストアンサーに選ばせていただきました。 頂いたURLだとファイルが見つかりません。となってしまいましたが、秋月電子にも同様の質問をしたところ、 https://wch-ic.com/downloads/category/30.html よりダウンロードできました。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.33%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問