teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

5

補足・修正

2020/12/06 03:36

投稿

thkana
thkana

スコア7738

answer CHANGED
@@ -41,7 +41,7 @@
41
41
 
42
42
  電圧が正常っぽいなら、ソフトというか、マイコンのファームウェアやFuseレジスタを疑って、書き換えを試みることになるでしょう。
43
43
 
44
- 使うツールは例えば[Atmel ICE](https://www.microchip.com/developmenttools/ProductDetails/PartNO/ATATMEL-ICE)。他にもっと安いISPとか言われる類、あるいはArduinoをISPに仕立てたものでも使えるのかも知れませんが私はAtmel ICEを持っているのでとりあえずそれ。PC側に[MicroChip Studio](https://www.microchip.com/mplab/microchip-studio) (最近Atmel studioから名前が変わった。Microchipサイト内でも表記が変わってないところも)。で、~~Firmwareが[これ](https://ww1.microchip.com/downloads/en/DeviceDoc/megaUSB_DFU_Bootloaders.zip)か。このパッケージの中のATMega16U4-usbdevice_dfu-1_0_1.hex?かな?を書き込んで~~(←書いてみたけどDFUモードにならなかった)Arduino IDEに含まれるファーム(下記参照)を書き込んで、FuseレジスタのHWBEをオフにすればよさそう...という実験は週末気が向けば。
44
+ 使うツールは例えば[Atmel ICE](https://www.microchip.com/developmenttools/ProductDetails/PartNO/ATATMEL-ICE)。他にもっと安いISPとか言われる類、あるいはArduinoをISPに仕立てたものでも使えるのかも知れませんが私はAtmel ICEを持っているのでとりあえずそれ。PC側に[MicroChip Studio](https://www.microchip.com/mplab/microchip-studio) (最近Atmel studioから名前が変わった。Microchipサイト内でも表記が変わってないところも)。で、Firmwareが[これ](https://ww1.microchip.com/downloads/en/DeviceDoc/megaUSB_DFU_Bootloaders.zip)か。このパッケージの中の~~ATMega16U4-usbdevice_dfu-1_0_1.hex?かな?を書き込んで~~(←書いてみたけどDFUモードにならなかった)at90usb162-bl-usb-1_0_5.hexを書き込むと、AT90USB162としてDFUで検出し、DFUでの書き込みも出来るようになった。あるいは、Arduino IDEに含まれるファーム(下記参照)を書き込んで(こちらだとDFU時ATMega16U2として検出)、FuseレジスタのHWBEをオフにすればよさそう...という実験は週末気が向けば。
45
45
 
46
46
  ---
47
47
  というわけで週末。

4

追記

2020/12/06 03:36

投稿

thkana
thkana

スコア7738

answer CHANGED
@@ -46,10 +46,12 @@
46
46
  ---
47
47
  というわけで週末。
48
48
  Arduino IDEのメニュー[ファイル]-[スケッチ例]-[ArduinoISP]-[ArduinoISP]をnanoに書き込んで、16u2側のICSPに接続。
49
+ Atmel Studio/Microchip StudioではArduino ISPは使えませんでしたのでavrdudeで。
50
+
49
51
  arduino IDEのインストールディレクトリをarduino-1.8.13として
50
52
  `cd arduino-1.8.13\hardware\tools\avr\bin`
51
53
  `./avrdude -p m16u2 -c avrisp -P com5 -C ..\etc\avrdude.conf -b 19200`
52
- とすると
54
+ とすると(いうまでもなく、ポートは環境に合わせてください)
53
55
  ```Text
54
56
  avrdude.exe: AVR device initialized and ready to accept instructions
55
57
 
@@ -65,7 +67,7 @@
65
67
 
66
68
  続いて
67
69
  `./avrdude -p m16u2 -c avrisp -P com5 -C ..\etc\avrdude.conf -b 19200 -U flash:w:\directExecute\arduino-1.8.13\hardware\arduino\avr\firmwares\atmegaxxu2\Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex`
68
- で書き込み実行。(.hexファイルを C:\~でドライブ名から書いたり、..\~で相対パスで指定したら何故かエラーになる?)
70
+ で書き込み実行。(.hexファイルを C:\~でドライブ名から書いたり、..\~で相対パスで指定したら何故かエラーになる? もちろんパスは環境にあわせて変更してください)
69
71
  以上で、通常時USB-UART変換、リセット(ピンショート)でDFUに入る状態です。
70
72
 
71
73
  確実に復帰できるとはいいません。そこで中華なnanoあたりを買うのか(Amazonで三百円台~)、だったらいっそもう一台ちゃんと16U2を使ったUNO互換機(千円以上)を買ってしまったほうがいいんじゃないのか、ちょっと悩ましいところもありますね。

3

追記

2020/12/06 01:59

投稿

thkana
thkana

スコア7738

answer CHANGED
@@ -41,4 +41,31 @@
41
41
 
42
42
  電圧が正常っぽいなら、ソフトというか、マイコンのファームウェアやFuseレジスタを疑って、書き換えを試みることになるでしょう。
43
43
 
44
- 使うツールは例えば[Atmel ICE](https://www.microchip.com/developmenttools/ProductDetails/PartNO/ATATMEL-ICE)。他にもっと安いISPとか言われる類、あるいはArduinoをISPに仕立てたものでも使えるのかも知れませんが私はAtmel ICEを持っているのでとりあえずそれ。PC側に[MicroChip Studio](https://www.microchip.com/mplab/microchip-studio) (最近Atmel studioから名前が変わった。Microchipサイト内でも表記が変わってないところも)。で、Firmwareが[これ](https://ww1.microchip.com/downloads/en/DeviceDoc/megaUSB_DFU_Bootloaders.zip)か。このパッケージの中のATMega16U4-usbdevice_dfu-1_0_1.hex?かな?を書き込んで、FuseレジスタのHWBEをオフにすればよさそう...という実験は週末気が向けば。
44
+ 使うツールは例えば[Atmel ICE](https://www.microchip.com/developmenttools/ProductDetails/PartNO/ATATMEL-ICE)。他にもっと安いISPとか言われる類、あるいはArduinoをISPに仕立てたものでも使えるのかも知れませんが私はAtmel ICEを持っているのでとりあえずそれ。PC側に[MicroChip Studio](https://www.microchip.com/mplab/microchip-studio) (最近Atmel studioから名前が変わった。Microchipサイト内でも表記が変わってないところも)。で、~~Firmwareが[これ](https://ww1.microchip.com/downloads/en/DeviceDoc/megaUSB_DFU_Bootloaders.zip)か。このパッケージの中のATMega16U4-usbdevice_dfu-1_0_1.hex?かな?を書き込んで~~(←書いてみたけどDFUモードにならなかった)Arduino IDEに含まれるファーム(下記参照)を書き込んで、FuseレジスタのHWBEをオフにすればよさそう...という実験は週末気が向けば。
45
+
46
+ ---
47
+ というわけで週末。
48
+ Arduino IDEのメニュー[ファイル]-[スケッチ例]-[ArduinoISP]-[ArduinoISP]をnanoに書き込んで、16u2側のICSPに接続。
49
+ arduino IDEのインストールディレクトリをarduino-1.8.13として
50
+ `cd arduino-1.8.13\hardware\tools\avr\bin`
51
+ `./avrdude -p m16u2 -c avrisp -P com5 -C ..\etc\avrdude.conf -b 19200`
52
+ とすると
53
+ ```Text
54
+ avrdude.exe: AVR device initialized and ready to accept instructions
55
+
56
+ Reading | ################################################## | 100% 0.05s
57
+
58
+ avrdude.exe: Device signature = 0x1e9489 (probably m16u2)
59
+
60
+ avrdude.exe: safemode: Fuses OK (E:F4, H:D9, L:FF)
61
+
62
+ avrdude.exe done. Thank you.
63
+ ```
64
+ とのことで接続出来ているみたい。Fuseの値がこれと違ったらFuseの書き換えを試行しましょう。Fuseを書き間違えるといわゆる「文鎮化(なにも出来なくなる)することもあるので注意。あまりいじりたくないので実験もしません。
65
+
66
+ 続いて
67
+ `./avrdude -p m16u2 -c avrisp -P com5 -C ..\etc\avrdude.conf -b 19200 -U flash:w:\directExecute\arduino-1.8.13\hardware\arduino\avr\firmwares\atmegaxxu2\Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex`
68
+ で書き込み実行。(.hexファイルを C:\~でドライブ名から書いたり、..\~で相対パスで指定したら何故かエラーになる?)
69
+ 以上で、通常時USB-UART変換、リセット(ピンショート)でDFUに入る状態です。
70
+
71
+ 確実に復帰できるとはいいません。そこで中華なnanoあたりを買うのか(Amazonで三百円台~)、だったらいっそもう一台ちゃんと16U2を使ったUNO互換機(千円以上)を買ってしまったほうがいいんじゃないのか、ちょっと悩ましいところもありますね。

2

追記

2020/12/06 01:55

投稿

thkana
thkana

スコア7738

answer CHANGED
@@ -18,4 +18,27 @@
18
18
  後者二つについては、プログラマを入手または作成して、BootloaderやFuseレジスタを上書きすることになると思われます。
19
19
  故障の場合は、マイコンが不良となっている場合は事実上お手上げ。それ以外はケースバイケース。
20
20
 
21
- これ以上の話をしますか?
21
+ これ以上の話をしますか?
22
+
23
+ ---
24
+ > >これ以上の話をしますか?
25
+ ぜひお願いしたいです。
26
+
27
+ とのことなので。
28
+
29
+ テスターは安いので構いません。デンキをいじるなら入手してください。電気は目に見えないので必須になります。[こんなのでも](https://www.yodobashi.com/product/100000001000444515/?gad1=&gad2=g&gad3=&gad4=452613146044&gad5=11011400150019367452&gad6=&gclid=Cj0KCQiAzZL-BRDnARIsAPCJs73DN-HlUUaCn3w6QjomRc4_VctrMtUWmhZOZFYT3ppdYSEpwI7tOdgaAkL9EALw_wcB&xfr=pla)...日本メーカー老舗にこだわらなければもっと安いのもあるでしょう。
30
+ Arduino UNO(純正)の回路図は[ここ](https://content.arduino.cc/assets/UNO-TH_Rev3e_sch.pdf)、基板パターンファイルは[ここ](https://content.arduino.cc/assets/UNO-TH_Rev3e-reference.zip)。
31
+ 基板パターンはいわゆるプリント基板CADと呼ばれる類のソフトなら大抵開けると思います。で、そこそこ以上の中華なArduinoなら、パターンもそのまま真似してるからこれが参考になるでしょう。
32
+ その辺を調べると(詳細を省く...というか知らない人にイチから教えると日が暮れる)、図の矢印の電極(回路図で言えばC5の16U2側)が
33
+ - 通常のArduino動作時およそ5V、
34
+ - ICSPコネクタのピンショートでリセットをかけている(ショートし続けた)時に、ほぼ0V
35
+ になってなきゃいけないことがわかります。ではそうなっているか...
36
+ テスタを電圧計モードにしてGNDとの間の電圧を測ってみてください。周辺とショートさせたりしないように...
37
+ ![Arduino基板図(純正)](e0ba4dd0fe8b7890ae46e6899e52150e.png)
38
+
39
+ 通常時5V付近になっていないようなら...マイコンの足との間で断線か? となるとちょっと修理は難しい。でもそういう状態だと普通のArduinoの書き込みも出来ないはず。そういう症状はないんですね?
40
+ リセット時に0v付近になっていないなら、この電極とGND間に1KΩぐらいの抵抗をはんだ付けする。初めての人にはかなり辛いと思う...
41
+
42
+ 電圧が正常っぽいなら、ソフトというか、マイコンのファームウェアやFuseレジスタを疑って、書き換えを試みることになるでしょう。
43
+
44
+ 使うツールは例えば[Atmel ICE](https://www.microchip.com/developmenttools/ProductDetails/PartNO/ATATMEL-ICE)。他にもっと安いISPとか言われる類、あるいはArduinoをISPに仕立てたものでも使えるのかも知れませんが私はAtmel ICEを持っているのでとりあえずそれ。PC側に[MicroChip Studio](https://www.microchip.com/mplab/microchip-studio) (最近Atmel studioから名前が変わった。Microchipサイト内でも表記が変わってないところも)。で、Firmwareが[これ](https://ww1.microchip.com/downloads/en/DeviceDoc/megaUSB_DFU_Bootloaders.zip)か。このパッケージの中のATMega16U4-usbdevice_dfu-1_0_1.hex?かな?を書き込んで、FuseレジスタのHWBEをオフにすればよさそう...という実験は週末気が向けば。

1

修正

2020/11/30 14:06

投稿

thkana
thkana

スコア7738

answer CHANGED
@@ -1,15 +1,15 @@
1
1
  ポケモンをやりたいだけの人には難しい話になりますが、ここは「ITエンジニア特化型Q&Aサイト」だそうなので(teratailをぐぐると広告でそう出る)、以下ITエンジニア(+エレクトロニクスエンジニア)特化型の話になります。
2
2
  (ポケモンな人は、諦めてArduinoを買い直すのが早いと思います。懲りずに互換機を買うか、安全のため正規品を買うかはお好きに。Arduinoはオープンハードなので「正規」というのは微妙かもしれませんが)
3
3
 
4
- ATMega16U2等は、リセット端子の立ち上がり時にLレベルになっているとBootloaderとして書かれているプログラムが起動するようになっています。で、出荷時にはDFUのプログラムがBootloaderに書かれていて、HWB端子はプルダウンされているので、ATMega16U2にリセットをかけてやればDFUデバイスとして立ち上がるはず...というのが仕組みです。
4
+ ATMega16U2等は、リセット端子の立ち上がり時にHWB端子がLレベルになっているとBootloaderとして書かれているプログラムが起動するようになっています。で、出荷時にはDFUのプログラムがBootloaderに書かれていて、HWB端子はプルダウンされているので、ATMega16U2にリセットをかけてやればDFUデバイスとして立ち上がるはず...というのが仕組みです。
5
- (なお、パワーオンリセット時にはリセット端子は叩かないのでユーザープログラム:通常はUSB-UART変換が起動するということのようです)
5
+ (なお、パワーオンリセット時にはリセット端子は叩かないのでユーザープログラム:ArduinoにおいてはUSB-UART変換が起動するということのようです)
6
6
 
7
7
  この仕組がうまく働かないのですから、上記のいずれかに問題がある、ということになります。
8
8
  また、マイコン側がDFUモードになっていないのなら、いくらWindows側のドライバをいじくり回しても無駄です。強制的にDFUドライバを入れる、というのは解決にならないと考えられます。
9
9
 
10
10
  で、DFUモードに入れないケースを想定してみると
11
11
  - 中華な互換機なのでHWBがプルダウンされていない(手抜き) -> 同メーカーで出来ている例が多数なのでこの線はなさそう
12
- - 製造不良(部品欠品やショート、ハンダ不良)でプルダウンが出来てない -> あり得る
12
+ - 製造不良(部品欠品やショート、ハンダ不良)でプルダウンが出来てない/リセットが出来ない -> あり得る
13
13
  - 故障 -> あり得る
14
14
  - Fuseレジスタ HWBEがアクティブになっていない -> あり得る
15
15
  - DFUのBootloaderが書かれていない/破損している -> あり得る