[未解決] → [解決] Arduino Uno R3 を AVRライタにして atmega328p-pu で遊びたい


AVRライタ(ブレッドボード)

[2015/12/21] 追記:
やはり原因はヒューズビットの設定を間違えていたことでした。
クロックの設定が、外部発振もしくは外部クロック入力になっていて、avrisp からシグネチャを読み出せなくなっていたようです。

なぜ設定をミスりまくっていたかというと、
AVRのフューズビット こちらの記事にあるように
> 負論理なのでビットの意味に対する肯定・否定は、0:肯定、1:否定となる
… そりゃ動かなくなりますよね。

ですので、解決方法としては、
ヒューズリセッタでヒューズをきちんと負論理で設定し直しました。
ちなみに

lfuse : 0x62
hfuse : 0xD9
efuse : 0x07

で設定し直しました。
これで内蔵クロックで動作するので avrisp からシグネチャが読み出せるようになります。

— 追記ここまで —

 

Arduino Uno R3 を AVR ライタとして動作させようとここ1週間ほどずっと悪戦苦闘しているのですが、
どうも、対象の石のヒューズ設定を間違えてしまい、やっちまった系になっているようだ。

 

上記写真のようにブレッドボードで回路を組み、一度書き込みに成功した。
(抵抗が 470Ω * 2 + 75Ω になっているのは察して下さい)
のでユニバーサル基板に回路を組み直し、マイコン遊びを楽しもうと思ったら…

 

make install すると以下のエラーが出てしまいライタからアクセスすることができない。

~/p/A/L/firmware ❯❯❯ make install
avrdude -c avrisp -P /dev/cu.usb* -b 19200 -p m328p -v -v -F -U flash:w:main.hex:i

avrdude: Version 6.1, compiled on Dec  2 2015 at 12:45:12
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "/usr/local/Cellar/avrdude/6.1/etc/avrdude.conf"
         User configuration file is "/Users/********/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : /dev/cu.usbmodem1D11411
         Using Programmer              : avrisp
         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 AVR ISP
         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.03s

avrdude: Device signature = 0x000000 (retrying)

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

avrdude: Device signature = 0x000000 (retrying)

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

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
avrdude: Expected signature for ATmega328P is 1E 95 0F
avrdude: safemode: lfuse reads as 0
avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0
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 "main.hex"
avrdude: writing flash (180 bytes):

Writing | ################################################## | 100% 0.28s

avrdude: 180 bytes of flash written
avrdude: verifying flash memory against main.hex:
avrdude: load data flash data from input file main.hex:
avrdude: input file main.hex contains 180 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.16s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
         0x00 != 0x0c
avrdude: verification error; content mismatch

avrdude: safemode: lfuse reads as 0
avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0
avrdude: safemode: Fuses OK (E:00, H:00, L:00)

avrdude done.  Thank you.

make: *** [flash] Error 1

 

なにをどうしても Device signature = 0x000000 になってしまっている。
ちなみにそんな石が既に 3 個(手元にある atmega328p-pu 全て)。
どーせ最初なんて間違ってマイコンダメにするよねーって思って余分に購入していた石も全部… (´・_・`)

 

.c と Makefile は ATOM 使って編集しているのですが、IntelliJ のオートセーブに慣れきったおかげで、
保存せずに make fuse / install しまうこと多数。
おそらくそれでやっちまったはず…はず…多分…(それにしても 3 回も?)

 

と、いうことで、本当は
AVR ライタ作成 → Lチカ → 成果を記事に!
と目論んでいましたが、解決するまで記事にすることは控えることに。
とりあえずエラーのメモということで。。。

あと、

あまり深く考えないとヒューズビットの罠にはまるので気をつける。

いや、今回のエラーがヒューズ設定ミスに起因するかどうかまだわかっていないのですけれど。

 

以下は大変参考になった ArduinoISPを汎用AVRライタとして使う から
6-4-10.プログラム書き込み時の注意事項 はよく読む。

・RSTDISBL は 0 にしない。0 だと ICSP で書き込みできなくなるらしい。
・SPIEN は 1 にしない。RSTDISBL == 0 と同じく ICSP で書き込めなくなるらしい。
・各種メモリやヒューズビット等の書き込み順序に気をつける。
・外部発振するとクリスタルないと書き込みができなくなる。
・内部発振は誤差大きい。多分 UART 使うときネックになるかも?勝手に想像。

 

とりあえず、トランジスタや抵抗は手元のものでなんとかなりそうだけど、
12V 電源とかがないので秋月で、ヒューズリセッター用の部品をいくつか注文。到着待ち。
その勢いで MS 製の使い慣れたキーボードじゃないと開発は捗らないよ!
ってことで Amazon のサイバーマンデーでキーボードも注文(全く関係はない)

あ、ライタ用のセラロックは既にあるけど、外部発振にするならその分のセラロックない…
注文するの忘れてた…。


 
電子回路やマイコンいじりなんて約10年ぶりでただでさえない知識がすっぽり抜け落ちているので
ちょんぼばっかりです。
なぜ沖縄那覇には気軽にいける範囲に秋葉原がないのか…。

沖縄にねずみーの国なんて作ろうとしないで、アジアの電気街in沖縄を作って欲しい。
東京から奪うパイはねずみーじゃなくてあきばーにしよう。うん。そうしよう。
免税特区としてそこは沖縄の意地を見せよう。あ、すばらしい俺得案。

部品が届いてヒューズリセッターもライタも動作確認ができたら次こそはちゃんとした記事を書きたい。

おわり


コメントを残す

メールアドレスが公開されることはありません。