回答編集履歴
5
補足・修正
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サイト内でも表記が変わってないところも)。で、
|
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
追記
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
追記
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
追記
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
|
+

|
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
修正
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
|
-
(なお、パワーオンリセット時にはリセット端子は叩かないのでユーザープログラム:
|
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が書かれていない/破損している -> あり得る
|