2017年8月16日水曜日

TQFPアダプタソケット製作(後編)

盆は、何かと忙しいですが、
早くアダプタを試したくて...
生チップへのブートローダー書込に移ります。
失敗も隠さず記録していますのでお楽しみください。

前回完成したTQFPアダプタシールド
ATmega328P-AU 32pin TQFPチップを装填します。
ここから3個入手しました。
台座の真中に乗せて
蓋をキッチリかぶせます。
ピンと金線の位置はいい感じにあっています。
ちゃんとピンが当たっているか
マイクロスコープで確認。
4辺別々に撮影して合成です。
中心がATmega328P-AU本体です。
金色が台座の金メッキ線、白いのがチップの足です。
うまく当たっているようです。
では、Arduino Uno書込機にシールドとして装着します。
書き込みの準備が整いました!
まずは、デバイスIDを
コマンドプロンプトからavrdude.exeで確認します。
微妙に認識した状態でArduino Unoで書き込むと
この時と同じ失敗を招く可能性があるからです。

ここの「デバイスIDを確認する」の所を参考にさせていただきました。
この所、何度もお世話になっています。
ありがとうございます。

以前した時と同じように
C:\Program Files (x86)\Arduino\hardware\tools\avr\etc
のavrdude.confを
avrdude.exeのあるフォルダ
C:\Program Files (x86)\Arduino\hardware\tools\avr\bin
にコピーします。
avrdude.confのフォルダパスを指定すると
命令が長くなり見難いという理由だけです。

コマンドプロンプトで
cd c:\program files (x86)\arduino\hardware\tools\avr\bin
ENTERして
avrdude.exeのあるディレクトリに移動します。

コマンド
"avrdude -C avrdude.conf  -c avrisp -P COM3 -b 19200 -p m328p"
ENTERで実行します。
Device signature = 0x000000です。
ダメですね~
なかなか一発でいかないですね~
わざとじゃないんですよ~ (^^ゞ
このavrdudeに言いたいのですが
エラー時に最後の”Thank you”は止めて欲しい、余計に悲しくなります。
もう一度、入念にパターンをチェックします。

ありゃりゃ、間違いがありました。
Fusion360でパターンを描いている時に
眼が一瞬ボケて"25"が"26"に見えたようです。
なので29pinへの配線が28pinに接続されています。

カッターでパターンカットして(裸眼で!)
マイクロスコープで確認します。
綺麗にカットできています。
目は大丈夫のようです。
ジャンパーで正しい接続にします。
所で、
上のマイクロスコープ写真、VGAですが綺麗です。
前のよりレンズが大きいからでしょうか?
いつの間にかコレを購入していたのです。
拡大写真はコレの方がいいですね。
お腹のダイヤルで50X~500Xの倍率を決め
対物との距離で焦点を合わせます。
手持ちでも意外と大丈夫です。

Override invalid signature check するには、"-F"追加を!とあるので
"-F"を追加して再び、デバイスID確認です。
"avrdude -C avrdude.conf  -c avrisp -P COM3 -b 19200 -p m328p -F"
このavrdude.exeは、大文字と小文字で機能が違うので注意します。
ちょっと頭冷やします。
原因として考えられるのは、
1.32pinだけ特別に処理するピンがあるのでは?
2.書込機Arduino Uno Rev3だとRESETの10μFは不要?
3.生チップの最初の書込は、水晶発振子が無い方がいいのかも?
4.チップの接触不十分
あくまでマーティーの過失は、最後に取って置く?

1.328PのDIPとTQFPで増えているピンは?
 ADC6 19pin と ADC7 22pin
 これらは、ADC専用ピンになっています。
"ADC[7:6] (TQFP and VFQFN Package Only) In the TQFP and VFQFN package, ADC[7:6] serve as analog inputs to the A/D converter. ..."
 なのでDIPとTQFPの配線の違いはありませんね~

2.RESETの10μFを外してみる。
 "protocol error"がでました。
 書込機がArduino Uno Rev3でも必要なようです。
3.水晶発振子を外してみる。
3-1.
・水晶発振子、22pFなし---変化なし
3-2.
・水晶発振子を交換:変化なし
・22pFだけを外す:変化なし
3-2.
・水晶発振子の両端に1MΩ:変化なし
 Arduino Uno Rev.3の回路図にあったので。

残るは、
最後のチップとアダプタの接触不良しかないですね~
アダプタソケットとチップが
ちゃんと接触しているか確認できないだろうか?

テスターでやれそうです。
テスターの探針は、
黒の-棒に電池の+
赤の+棒が電池の-
になっているので
赤棒をGNDにつけて各ピンの抵抗値を見ます。
ちゃんと接触していると
GND間の抵抗値が150KΩ付近になります。
最初からこれに気づいていたら...
接触していないピンがありました。
接触が悪かったのです。
やはりマーティーが悪かったのでした。
台座の8本金メッキ線が微妙に凸凹しているのです。
上からの押さえが平坦なアクリルで硬いので
その凸凹にうまく合ってくれず
蓋をかなり強く押さえないと
うまく接触しなかったようなのです。
断面を図示するとこんな感じ。
大変微妙なのです。と言い訳がましく...
ここまで2個のチップを試しています。
最後の3個目のチップに交換して装着。
テスターで入念に接触を確認します。

avrdude.exeでデバイスID確認
コマンド
"avrdude -C avrdude.conf  -c avrisp -P COM3 -b 19200 -p m328p -F"
ENTERで実行します。
おーー!認識できました!
Device signature = 0x1e950f(probably m328p)
ちゃんと”m328p”を認識しています。
数回やってみても同じ結果です。
遂にやりました!
いよいよブートローダーの書き込みです。
Arduino IDE 1.8.3使います。
もう一度、ボード、プロセッサ、シリアルポート、書込装置を確認して
いざ[ブートローダーを書き込む]クリックっと!
ワクワク、ドキドキ...
進んでいるようです。
*****
Arduino:1.8.3 (Windows 10), ボード:"Arduino Nano, ATmega328"

C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -cstk500v1 -PCOM3 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xDA:m -Ulfuse:w:0xFF:m 

avrdude: Version 6.3, compiled on Jan 17 2017 at 12:00:53
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM3
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel STK500 Version 1.x firmware
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: erasing chip
avrdude: reading input file "0x3F"
avrdude: writing lock (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of lock written
avrdude: verifying lock memory against 0x3F:
avrdude: load data lock data from input file 0x3F:
avrdude: input file 0x3F contains 1 bytes
avrdude: reading on-chip lock data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of lock verified
avrdude: reading input file "0xFD"
avrdude: writing efuse (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of efuse written
avrdude: verifying efuse memory against 0xFD:
avrdude: load data efuse data from input file 0xFD:
avrdude: input file 0xFD contains 1 bytes
avrdude: reading on-chip efuse data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of efuse verified
avrdude: reading input file "0xDA"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xDA:
avrdude: load data hfuse data from input file 0xDA:
avrdude: input file 0xDA contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xFF"
avrdude: writing lfuse (1 bytes):

C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -cstk500v1 -PCOM3 -b19200 -Uflash:w:C:\Program Files (x86)\Arduino\hardware\arduino\avr/bootloaders/atmega/ATmegaBOOT_168_atmega328.hex:i -Ulock:w:0x0F:m 
Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xFF:
avrdude: load data lfuse data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified

avrdude done.  Thank you.


avrdude: Version 6.3, compiled on Jan 17 2017 at 12:00:53
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM3
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel STK500 Version 1.x firmware
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

ブートローダの書き込み中にエラーが発生しました。
Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0xffc000
avrdude: Expected signature for ATmega328P is 1E 95 0F
         Double check chip, or use -F to override this check.

avrdude done.  Thank you.
*****
がくっ、また、最後でエラーかあぁ...!
かなりいいとこまで行ったようなのにー!

あちゃー、水晶発振子を取ったままでした(´-﹏-`;)
暑さのせいか、どうも注意力欠乏です。

最後の補足に書きますが、ここを読むと
生チップのブートローダー書込で水晶発振子を付けてないと
最初にEraseを内部発振で行い、
その後に外部発振に切り替わるので
肝心のブートローダー書込ができないということなのです。

FUSE bitとやらの書込に成功しているので
Erase後に内蔵発振が解除され
外部発振回路に固定されたようです。
ということらしい。

水晶発振子と22pFを付けます!
また、コマンドプロンプトでデバイスIDを確認。
”m328p”を認識してくれています。
Fusesの内容は、変わっています。
再度!Arduino IDE 1.8.3で
[ブートローダーを書き込む]!イキマ~~す!
###が進む所は心臓に悪いですね~
おお~~~成功です!!!
記念すべき瞬間です!
しばし感激で固まっています。
この時ばかりは
最後の「Thank you」が嬉しく思えます。
動画です。
成功すると書込機のArduino Unoの"L"のLEDが点滅します。
どうでもいい動画ですが...
この瞬間は興奮していて成功の証の動画が欲しかったのです。
記念に詳細ログも
***********
C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -cstk500v1 -PCOM3 -b19200 -e -Ulock:w:0x3F:m 

avrdude: Version 6.3, compiled on Jan 17 2017 at 12:00:53
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM3
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel STK500 Version 1.x firmware
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: erasing chip
avrdude: reading input file "0x3F"
avrdude: writing lock (1 bytes):

C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -cstk500v1 -PCOM3 -b19200 -Uflash:w:C:\Program Files (x86)\Arduino\hardware\arduino\avr/bootloaders/atmega/ATmegaBOOT_168_atmega328.hex:i -Uefuse:w:0xFD:m -Uhfuse:w:0xDA:m -Ulfuse:w:0xFF:m -Ulock:w:0x0F:m 
Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of lock written
avrdude: verifying lock memory against 0x3F:
avrdude: load data lock data from input file 0x3F:
avrdude: input file 0x3F contains 1 bytes
avrdude: reading on-chip lock data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 1 bytes of lock verified

avrdude done.  Thank you.


avrdude: Version 6.3, compiled on Jan 17 2017 at 12:00:53
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM3
         Using Programmer              : stk500v1
         Overriding Baud Rate          : 19200
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : STK500
         Description     : Atmel STK500 Version 1.x firmware
         Hardware Version: 2
         Firmware Version: 1.18
         Topcard         : Unknown
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "C:\Program Files (x86)\Arduino\hardware\arduino\avr/bootloaders/atmega/ATmegaBOOT_168_atmega328.hex"
avrdude: writing flash (32670 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 32670 bytes of flash written
avrdude: verifying flash memory against C:\Program Files (x86)\Arduino\hardware\arduino\avr/bootloaders/atmega/ATmegaBOOT_168_atmega328.hex:
avrdude: load data flash data from input file C:\Program Files (x86)\Arduino\hardware\arduino\avr/bootloaders/atmega/ATmegaBOOT_168_atmega328.hex:
avrdude: input file C:\Program Files (x86)\Arduino\hardware\arduino\avr/bootloaders/atmega/ATmegaBOOT_168_atmega328.hex contains 32670 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.01s

avrdude: verifying ...
avrdude: 32670 bytes of flash verified
avrdude: reading input file "0xFD"
avrdude: writing efuse (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 1 bytes of efuse written
avrdude: verifying efuse memory against 0xFD:
avrdude: load data efuse data from input file 0xFD:
avrdude: input file 0xFD contains 1 bytes
avrdude: reading on-chip efuse data:

Reading | ################################################## | 100% 0.02s

avrdude: verifying ...
avrdude: 1 bytes of efuse verified
avrdude: reading input file "0xDA"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xDA:
avrdude: load data hfuse data from input file 0xDA:
avrdude: input file 0xDA contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xFF"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.02s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xFF:
avrdude: load data lfuse data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% -0.00s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: reading input file "0x0F"
avrdude: writing lock (1 bytes):

Writing | ################################################## | 100% 0.03s

avrdude: 1 bytes of lock written
avrdude: verifying lock memory against 0x0F:
avrdude: load data lock data from input file 0x0F:
avrdude: input file 0x0F contains 1 bytes
avrdude: reading on-chip lock data:

Reading | ################################################## | 100% -0.00s

avrdude: verifying ...
avrdude: 1 bytes of lock verified

avrdude done.  Thank you.

***********

アダプタへの装着の確認のコツがわかってきたので
認識できなかった2個目のチップを装着します。
アダプタの蓋をよ~く締めてテスターで接触を確認。
avrdude.exeでデバイスIDを確認します。
Fusesは、生チップの値になっています。
これは呆気なくブートローダー書込成功です!
これで2個成功!
調子に乗って1個目のできなかったチップにいきます。
テスターでのチェックはOKですが、
ダメですね~。
Device signature = 0xffffff と
Device signature = 0xffe0ff と
違うのがでています。
これは微妙に接触不良の感じです。
このチップ、よ~~く見ると
アダプタソケットにきれいに入っていません。
どうしても1辺だけ、チップピンが微妙に隣合う金メッキ線の間に
来ている感じなのです。
微妙に外径が違うのだろうか?
アダプタのアクリルがすり減ってきたのか?
テスターで測ってもわからないはずです。
チップの四隅の隙間に紙(青いの)を挟み込んで
できるだけ動かないようにします。
で、デバイスIDを見ると
遂にm328pと認識されました!
再度、Arduino IDEで[ブートローダーを書き込む]します。
成功で~す!
これで3つのチップ全てにブートローダーを書き込むことができました。
生チップとブートローダー書込後で
Fusesは、こう変わっています。
上(生チップ):Fuses OK (E:FF, H:D9, L:62)
下(書込後) :Fuses OK (E:FD, H:DA, L:FF)
やっぱ
TQFPアダプタソケット
伊達に高いわけではないのですね~
確実に接触させるために色んなノウハウが詰まっていそうです。

しばし、充実感に浸っています。
ここまで来るのに結構長かったです。
一時は、”お蔵入り”が頭をよぎりました。
見て頂いている皆様のお陰で頑張れたのだと思います。

最後に、ここでブートローダーを書き込んだチップを
壊れているWoodpeckerに載せ替えて
USB接続でブートローダーを起動して
GRBLソフトを書き込む作業が残っています。
その前にチップのハンダ付けの難関が待っています。
後もう少しです。

【まとめ】
1.回路図
最終は、これです。
水晶発振子に並列に1MΩを追加しただけ
Arduino Uno Rev.3には、ついていたからです。
一番右のRESETの10μFは、シールド側の基板につけています。
2.念の為、USB-SERIAL CH340(COMx)の設定。
ビット/秒:19200

3.デバイスID(Device Signature)をの確認。
先にavrdude.exeでデバイスID(Device Signature)を確認するのが安心。
コマンドプロンプトで
"avrdude -C avrdude.conf  -c avrisp -P COM3 -b 19200 -p m328p -F"
ENTERで実行。

avrdude.confのフォルダパスを指定すると
命令が長くなるので。
C:\Program Files (x86)\Arduino\hardware\tools\avr\etc
のavrdude.confを
avrdude.exeのあるフォルダ
C:\Program Files (x86)\Arduino\hardware\tools\avr\bin
にコピーしています。

4.ブートローダー書き込み。
書込装置は、ArduinoISPを書き込んだArduino Uno。
Arduino IDE 1.8.3を起動して、
Woodpeckerとして使う場合は、
ボード:Arduino Nano
プロセッサ:”ATmega328”
シリアルポート:COM3(マーティーのUSBポートの場合)
書込装置:Arduino as ISP
[ブートローダーを書き込む]をクリック。
*****まとめここまで*****

【補足】
最後に備忘録として
途中で参考になった情報。

ここに内部発振と外部発振の切り替えのことが詳細にあります。

生チップのブートローダー書込で水晶発振子を付けてないと
Eraseまでは内部発振で行われますが
その後に外部発振に切り替わるので
肝心のブートローダーを書き込みできないということなのです。

マーティーの場合も
水晶発振子無しでEraseとFuses書込に成功し
ブートローダー書込でエラーがでました。
水晶発振子をつけてやり直すと成功しているので
実際にこの方が書かれているようになっている事が
実証できたわけです。

この編集をやると
生チップに水晶発振子無しでも
1回だけブートローダーを書き込むことができるとのこと。
その後は、外部発振に切り替わるので水晶発振子必須です。

¥arduino¥hardware¥arduino¥avr¥platform.txt
内の2行を以下のように編集します。
赤文字部を
erase.patternからbootloader.patternの所に移動するわけです。
*****
tools.avrdude.erase.pattern="{cmd.path}" "-C{config.path}" {erase.verbose} -p{build.mcu} -c{protocol} {program.extra_params} -e -Ulock:w:{bootloader.unlock_bits}:m -Uefuse:w:{bootloader.extended_fuses}:m -Uhfuse:w:{bootloader.high_fuses}:m -Ulfuse:w:{bootloader.low_fuses}:m
 tools.avrdude.erase.pattern="{cmd.path}" "-C{config.path}" {erase.verbose} -p{build.mcu} -c{protocol} {program.extra_params} -e -Ulock:w:{bootloader.unlock_bits}:m

~~~~~
tools.avrdude.bootloader.pattern="{cmd.path}" "-C{config.path}" {bootloader.verbose} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:{runtime.platform.path}/bootloaders/{bootloader.file}:i" -Ulock:w:{bootloader.lock_bits}:m
 tools.avrdude.bootloader.pattern="{cmd.path}" "-C{config.path}" {bootloader.verbose} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:{runtime.platform.path}/bootloaders/{bootloader.file}:i" -Uefuse:w:{bootloader.extended_fuses}:m -Uhfuse:w:{bootloader.high_fuses}:m -Ulfuse:w:{bootloader.low_fuses}:m -U lock:w:{bootloader.lock_bits}:m
*****

2 件のコメント:

昔青年 さんのコメント...

サンデー毎日の昔青年です。

世間は、お盆休みだ、帰省だとか、言っていましたが、当方には、なんの影響もありません。(笑)
TQFPアダプタソケット製作3部作、できればGRBL書き込み、CNC2418で無事作動まで確認してからコメントすればよかったかもしれませんが、ここまでくれば、チップの置き換えだけですからでできたも同然と思います。
シールドの自作までやってしまうのには、感心してしまいました。

マーティーの工房日誌 さんのコメント...

昔青年さん、見守っていただきありがとうございます。
"後編"としていたので最後までいったと思わせてm(_ _)m
ここまでくれば、たぶん成功する?と思いますが
何が起こるかわからないのがマーティーであります(笑)
最後の難関はクリーム半田塗りです。
今後とも宜しくお願いします。