回答編集履歴

5

補足・修正

2020/12/06 03:36

投稿

thkana
thkana

スコア7703

test CHANGED
@@ -84,7 +84,7 @@
84
84
 
85
85
 
86
86
 
87
- 使うツールは例えば[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をオフにすればよさそう...という実験は週末気が向けば。
87
+ 使うツールは例えば[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をオフにすればよさそう...という実験は週末気が向けば。
88
88
 
89
89
 
90
90
 

4

追記

2020/12/06 03:36

投稿

thkana
thkana

スコア7703

test CHANGED
@@ -94,13 +94,17 @@
94
94
 
95
95
  Arduino IDEのメニュー[ファイル]-[スケッチ例]-[ArduinoISP]-[ArduinoISP]をnanoに書き込んで、16u2側のICSPに接続。
96
96
 
97
+ Atmel Studio/Microchip StudioではArduino ISPは使えませんでしたのでavrdudeで。
98
+
99
+
100
+
97
101
  arduino IDEのインストールディレクトリをarduino-1.8.13として
98
102
 
99
103
  `cd arduino-1.8.13\hardware\tools\avr\bin`
100
104
 
101
105
  `./avrdude -p m16u2 -c avrisp -P com5 -C ..\etc\avrdude.conf -b 19200`
102
106
 
103
- とすると
107
+ とすると(いうまでもなく、ポートは環境に合わせてください)
104
108
 
105
109
  ```Text
106
110
 
@@ -132,7 +136,7 @@
132
136
 
133
137
  `./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`
134
138
 
135
- で書き込み実行。(.hexファイルを C:\~でドライブ名から書いたり、..\~で相対パスで指定したら何故かエラーになる?)
139
+ で書き込み実行。(.hexファイルを C:\~でドライブ名から書いたり、..\~で相対パスで指定したら何故かエラーになる? もちろんパスは環境にあわせて変更してください)
136
140
 
137
141
  以上で、通常時USB-UART変換、リセット(ピンショート)でDFUに入る状態です。
138
142
 

3

追記

2020/12/06 01:59

投稿

thkana
thkana

スコア7703

test CHANGED
@@ -84,4 +84,58 @@
84
84
 
85
85
 
86
86
 
87
- 使うツールは例えば[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をオフにすればよさそう...という実験は週末気が向けば。
87
+ 使うツールは例えば[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をオフにすればよさそう...という実験は週末気が向けば。
88
+
89
+
90
+
91
+ ---
92
+
93
+ というわけで週末。
94
+
95
+ Arduino IDEのメニュー[ファイル]-[スケッチ例]-[ArduinoISP]-[ArduinoISP]をnanoに書き込んで、16u2側のICSPに接続。
96
+
97
+ arduino IDEのインストールディレクトリをarduino-1.8.13として
98
+
99
+ `cd arduino-1.8.13\hardware\tools\avr\bin`
100
+
101
+ `./avrdude -p m16u2 -c avrisp -P com5 -C ..\etc\avrdude.conf -b 19200`
102
+
103
+ とすると
104
+
105
+ ```Text
106
+
107
+ avrdude.exe: AVR device initialized and ready to accept instructions
108
+
109
+
110
+
111
+ Reading | ################################################## | 100% 0.05s
112
+
113
+
114
+
115
+ avrdude.exe: Device signature = 0x1e9489 (probably m16u2)
116
+
117
+
118
+
119
+ avrdude.exe: safemode: Fuses OK (E:F4, H:D9, L:FF)
120
+
121
+
122
+
123
+ avrdude.exe done. Thank you.
124
+
125
+ ```
126
+
127
+ とのことで接続出来ているみたい。Fuseの値がこれと違ったらFuseの書き換えを試行しましょう。Fuseを書き間違えるといわゆる「文鎮化(なにも出来なくなる)することもあるので注意。あまりいじりたくないので実験もしません。
128
+
129
+
130
+
131
+ 続いて
132
+
133
+ `./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`
134
+
135
+ で書き込み実行。(.hexファイルを C:\~でドライブ名から書いたり、..\~で相対パスで指定したら何故かエラーになる?)
136
+
137
+ 以上で、通常時USB-UART変換、リセット(ピンショート)でDFUに入る状態です。
138
+
139
+
140
+
141
+ 確実に復帰できるとはいいません。そこで中華なnanoあたりを買うのか(Amazonで三百円台~)、だったらいっそもう一台ちゃんと16U2を使ったUNO互換機(千円以上)を買ってしまったほうがいいんじゃないのか、ちょっと悩ましいところもありますね。

2

追記

2020/12/06 01:55

投稿

thkana
thkana

スコア7703

test CHANGED
@@ -39,3 +39,49 @@
39
39
 
40
40
 
41
41
  これ以上の話をしますか?
42
+
43
+
44
+
45
+ ---
46
+
47
+ > >これ以上の話をしますか?
48
+
49
+ ぜひお願いしたいです。
50
+
51
+
52
+
53
+ とのことなので。
54
+
55
+
56
+
57
+ テスターは安いので構いません。デンキをいじるなら入手してください。電気は目に見えないので必須になります。[こんなのでも](https://www.yodobashi.com/product/100000001000444515/?gad1=&gad2=g&gad3=&gad4=452613146044&gad5=11011400150019367452&gad6=&gclid=Cj0KCQiAzZL-BRDnARIsAPCJs73DN-HlUUaCn3w6QjomRc4_VctrMtUWmhZOZFYT3ppdYSEpwI7tOdgaAkL9EALw_wcB&xfr=pla)...日本メーカー老舗にこだわらなければもっと安いのもあるでしょう。
58
+
59
+ Arduino UNO(純正)の回路図は[ここ](https://content.arduino.cc/assets/UNO-TH_Rev3e_sch.pdf)、基板パターンファイルは[ここ](https://content.arduino.cc/assets/UNO-TH_Rev3e-reference.zip)。
60
+
61
+ 基板パターンはいわゆるプリント基板CADと呼ばれる類のソフトなら大抵開けると思います。で、そこそこ以上の中華なArduinoなら、パターンもそのまま真似してるからこれが参考になるでしょう。
62
+
63
+ その辺を調べると(詳細を省く...というか知らない人にイチから教えると日が暮れる)、図の矢印の電極(回路図で言えばC5の16U2側)が
64
+
65
+ - 通常のArduino動作時およそ5V、
66
+
67
+ - ICSPコネクタのピンショートでリセットをかけている(ショートし続けた)時に、ほぼ0V
68
+
69
+ になってなきゃいけないことがわかります。ではそうなっているか...
70
+
71
+ テスタを電圧計モードにしてGNDとの間の電圧を測ってみてください。周辺とショートさせたりしないように...
72
+
73
+ ![Arduino基板図(純正)](e0ba4dd0fe8b7890ae46e6899e52150e.png)
74
+
75
+
76
+
77
+ 通常時5V付近になっていないようなら...マイコンの足との間で断線か? となるとちょっと修理は難しい。でもそういう状態だと普通のArduinoの書き込みも出来ないはず。そういう症状はないんですね?
78
+
79
+ リセット時に0v付近になっていないなら、この電極とGND間に1KΩぐらいの抵抗をはんだ付けする。初めての人にはかなり辛いと思う...
80
+
81
+
82
+
83
+ 電圧が正常っぽいなら、ソフトというか、マイコンのファームウェアやFuseレジスタを疑って、書き換えを試みることになるでしょう。
84
+
85
+
86
+
87
+ 使うツールは例えば[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

スコア7703

test CHANGED
@@ -4,9 +4,9 @@
4
4
 
5
5
 
6
6
 
7
- ATMega16U2等は、リセット端子の立ち上がり時にLレベルになっているとBootloaderとして書かれているプログラムが起動するようになっています。で、出荷時にはDFUのプログラムがBootloaderに書かれていて、HWB端子はプルダウンされているので、ATMega16U2にリセットをかけてやればDFUデバイスとして立ち上がるはず...というのが仕組みです。
7
+ ATMega16U2等は、リセット端子の立ち上がり時にHWB端子がLレベルになっているとBootloaderとして書かれているプログラムが起動するようになっています。で、出荷時にはDFUのプログラムがBootloaderに書かれていて、HWB端子はプルダウンされているので、ATMega16U2にリセットをかけてやればDFUデバイスとして立ち上がるはず...というのが仕組みです。
8
8
 
9
- (なお、パワーオンリセット時にはリセット端子は叩かないのでユーザープログラム:通常はUSB-UART変換が起動するということのようです)
9
+ (なお、パワーオンリセット時にはリセット端子は叩かないのでユーザープログラム:ArduinoにおいてはUSB-UART変換が起動するということのようです)
10
10
 
11
11
 
12
12
 
@@ -20,7 +20,7 @@
20
20
 
21
21
  - 中華な互換機なのでHWBがプルダウンされていない(手抜き) -> 同メーカーで出来ている例が多数なのでこの線はなさそう
22
22
 
23
- - 製造不良(部品欠品やショート、ハンダ不良)でプルダウンが出来てない -> あり得る
23
+ - 製造不良(部品欠品やショート、ハンダ不良)でプルダウンが出来てない/リセットが出来ない -> あり得る
24
24
 
25
25
  - 故障 -> あり得る
26
26