2017年7月30日日曜日

小型工作機CNC2418 その25(もう1枚のv1.1f UpgradeはISCPでも失敗)

もう1枚 後から購入したCNC2418用のボードWoodpeckerの
GRBL v1.1f Upgaradeへの挑戦は続きます。

TxD、RxD端子の通信ではブートローダーが必須で
前回、結局、できませんでした。
事前に、Arduino Unoをブートローダー書込機にしたし
今度は、ISCPを使ってWoodpeckerのGRBL v1.1f Upgradeをやってみます。

この前のGRBL v1.1f Upgrade成功の時に
ここでみつけた
Woodpeckerの回路図を見ます。
WoodpeckerのボードのままISCPで書き込みできないか検討するためです。

USB接続でArduino IDEからGRBL 1.1fにUpgradeできなかったボードです。
マーティーが最初に購入したDZT's storeの
CNC2418のオリジナルのものとは違います。
チップ部品が全て表側についています。
今更ですが、AliExpressの写真(上)と違いますね~
上のボードは、表面にチップ部品が見当たりません。
ISCPの結線は、公式サイトのここの
下の方の右側(水晶発振子がついている方です)


もうひとつ
ここも参考にさせていただきました。
やはり日本語の方が安心できます。

これらは、ターゲットがDIPパッケージなのでピンが異なります。
Woodpeckerに付いているATMEGA328P-AUの
データシートを見ます。
パッケージは、32pin TQFPなので
ピンアサインはこれです。
書込機側のArduino Unoと
ATMEGA328P-AU(32pin TQFP)との接続は
[Uno]--[328P]
 D10  -- RESET(29pin)
 D11  -- MOSI/PB3(15pin)
 D12  -- MISO/PB4(16pin)
 D13  -- SCK/PB5(17pin)
 5V  -- AVCC(18pin)
 5V    -- VCC
 GND  -- GND
残り
XTAL1、XTAL2は、16MHz水晶発振子がついているのでOK。

これらのISCPで使う端子についてWoodpeckerを見てみます。
まずは、回路図で
・RESET:ヘッダーピンがでています。
・MOSI/PB3(15pin):D11
 Spindle DriveのPower MOSFET Gateに繋がっています。
 MOSFETのGate容量が気になる所です。
 Infinion IRF540のCissは1960pFでした。
 19200bpsでは、問題ないでしょう。たぶん。
・MISO/PB4(16pin):D12
 Zend端子でヘッダーピンがでています。
 0.1μFコンデンサがGNDに入っているので
 ISCP接続するには削除する必要があります。
・SCK/PB5(17pin):D13
 何も繋がってなく、ヘッダーピンのRSTとA6の間にでています。
・AVCC(18pin):
 GND間に0.1μFがついているだけです。
 Datasheetを見ると
 "AVCC is the supply voltage pin for the A/D Converter, PC[3:0], and PE[3:2]"
 これだったら、5Vに繋がなくていいはずです。
所が私が追加購入したWoodpeckerボードは、
これらが、少し違っています。
私が購入したDZT's storeのCNC2418のボードと違うのです。
どこが違うかというと

RS232C~TTL変換ボードを付けている時から
ちょっと気にはなっていたのですが
書き込みできないボードは、
D12の0.1μFが付いてないのです。
拡大すると外されたのか、接着剤だけなのか
チップ部品がありません。
パット見、目視ではわかりません。
しかもZenのシルク印刷が1個しかないのです。
CNC2418のオリジナルボードは
この右側もZenのシルクがあるのです。
Yenの所は、ちゃんと2つあります。Xenもです。
拡大。
後から取ったような感じもしますね~?
真相はわかりません。
そして、本来、もう一つのZen端子であるべき所は
ISCPで使う
D11であるMOSI/PB3(15pin)から来ているのです。
もう一つ、部品がついていない所が、
A6とGND間のパターンです。
何とD13と繋がっていて
そのD13~GND間の部品が取り外されています。
ここの回路図には出てこない部品ですが
ISCPに不都合なので取り外されていると思われす。
D13はスピンドル回転方向制御端子なので
本来は、ノイズ低減用に0.1μFがついていたと思われます。
結局、ISCPに必要な端子が全てヘッダーピン上に揃うのです。
しかも、書込に支障をきたすD12の0.1μFが削除されています。
オリジナルのボードは、そうはいきません。
D11は、出ていないし、D12に0.1μFが付いています。
これは、もう部品組立後にISCPでGRBL 0.9jを
書き込んでいるとしか、考えられません。
ということは、ブートローダーは入っていない可能性大です。
この時マーティーはできる気満々でワクワクしています。

いよいよ
書込機(Arduino Uno) と Woodpeckerの接続です。
ArduinoISPを書き込んだArduino Uno(”書込機”)とします。
配線は、6本です。
書込機 -- ターゲット
 D10 -- RESET
 D11 -- D11(Zenの右)
 D12 -- D12(Zen)
 D13 -- D13(RstとA6の間)
 5V -- 5V
 GND-- GND

実際の配線はこれです。
このクリップ、便利なのですが
クリップとリード線の色が違って分かり難いです。
公式サイトに注意書きがあるので
Arduino UnoのRES~GND間にタンタルコンデンサ 10μFを入れています。
注意:あくまでもこのWoodpeckerボードはCNC2418純正ではありません
チップ部品が全て表側についているタイプです。
少なくとも先に成功したDZT's storeのものとは異なっています。
では、書き込みます。
[ツール]-[書込装置]から
「Arduino as ISP」にします。
そして、同じく
[ツール]から[ブートローダーを書き込む]をクリック!
OH MY GOD!
エラーです!
*****
Arduino:1.8.3 (Windows 10), ボード:"Arduino/Genuino Uno"

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:0xDE: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 = 0x1e2b02
avrdude: Expected signature for ATmega328P is 1E 95 0F
         Double check chip, or use -F to override this check.

avrdude done.  Thank you.
*****
Device(ATmega328P)が正常に認識されていません。

念の為、COM1を19200にセットして
今度は、[ツール]-[ボード]で
Arduino Nanoに設定します。
おっ!いけたかっ!
と思ったのも一瞬。
エラーです。
ここで輝かしい成功の記録にしたかったのに~~
*****
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.01s

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 |  ***failed;
################################################## | 100% 0.05s

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: verification error, first mismatch at byte 0x0000
         0xfe != 0xfd
avrdude: verification error; content mismatch

avrdude done.  Thank you.

ブートローダの書き込み中にエラーが発生しました。
*****
いいとこまで行っていた感じでしたが
最初の1Byte 0x3Fを書き込んでだものの
Verifyでエラーです。
中途半端な書き込みだから死んだだろうなあ~?

Arduino IDEのシリアルモニタで確認します。
「おーい!」・・・応答がありません。
死にましたーーー!(T_T)

ということで
このWoodpeckerは、チップを載せ替えないと
v1.1fへのUpgradeはできないという始末になってしまいました。

重ねて言いますが
この失敗したGRBLコントロールボード(Woodpecker)は
先に成功したAliExpressのDZT's storeで購入したものではありません。
別のセラーから購入したボードです。
一見、同じものですが違う方法で作られている可能性大です。
たまたまこのボードだけができなかったのかもしれません。
たまたまDZT's storeのボードができたのかもしれません。
”v1.1f Upgrade可能”とは、セラーは謳っていないので
壊れても自己責任であります。

今思えば、手を抜いてしまった手順
ステッピングモータードライブシールドを外しておけばーー
ケーブルを短くしておけばーー
等も考えられますが、後の祭りです。

幸運にも?、まだ最終手段が残っています!
ATMEGA328P-AU 32pin TQFP単体に
ブートローダーを書き込んだものを
Woodpeckerに載せ替えてGRBL1.1fをアップロードする方法です。

それにしてもTQFP単体に
どうやって書き込もうかな~~~~
TQFPアダプタソケット買うしかないのだろうか?
そもそも数$をケチって安いボードを買ってこの始末なのです。
何だか高くつきそう。

ということでまた失敗の記録となりm(_ _)m

2 件のコメント:

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

マーティーさん
GRBLのバージョンアップ、コントロール]基板の違いでご苦労されていますね。
当方は、CNC2418付属の基板(マーティーさんと同じもの)で、無事にバージョンアップできました。S110,$111の値変更(5000→2000)もあわせてやっておきました。
Arduino IDEは、バージョンによって、コンパイルできたり、できなかったりの経験はあります。
そのため、v1.0.6,v1.6.9、最新の三種類で試すようにしています。 GRBLはv1.8.0でOKでした。IDEからのコマンドでの設定値変更が反映されないエラーも同じでした。
マーティーさんのブログもワールドワイドになってきましたね。何カ国ぐらい閲覧されているのでしょう?

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

GRBL Upgrade成功おめでとうございます!
$110、$111は、5000にしても実質稼働ではmax2000位です。
800にしてみるとちょっと遅い所がある感じなので
2000はいい所かなあと思います。
苦労も勉強の内で頑張っています!
頭の運動です。体の運動がお休み状態ですが...
Arduino IDEのバージョンは3種類も試されるんですね。
このような情報は大変参考になります。
ちなみにこれまで14カ国から閲覧されています。
多い順です。
Google翻訳も一昔前から格段に良くなっていますからね~
日本、USA、台湾、ドイツ、タイ、南アフリカ、大韓民国、アイルランド、アイスランド、ロシア、スペイン、ベルギー、アルゼンチン、ブラジル
この辺も励みになります。