ATmega88の書き込みに関する問題

このQ&Aのポイント
  • ATmega88が書き込めなくなった状況とエラーメッセージについて説明します。
  • 問題の原因はSPIENのフューズビット設定がHIGHになってしまい、SPI通信が無効になったためです。
  • ATmega88チップを工場出荷時の状態に戻し、問題を解決する方法を知りたいという質問です。
回答を見る
  • ベストアンサー

ATmega88が全く書き込めなくなった。

ATmega88+AVRATJTAGICEでプログラミング、書き込みなどを行っています。 プログラミングを行い、書き込みを行っていたところ、次のようなエラーボックスが表示されて書き込みができなくなってしまいました。 Failed to enter SPI mode.Check that your squid cable is correctly attached. If the SPIEN fuse is not enabled,the part must be programmed using high-voltage. どうも、SPIENのフューズビット設定がHIGHにセットされてしまいSPI通信が無効の状態になってしまったようで、それでファームウェアHEXファイルを書き込めないとのことだと思うのですが、 もし、このような状態に陥ってしまった場合、ATmega88チップを工場出荷時の状態に戻したりとかそのような操作方法や解決方法をご存じの方いらっしゃいませんでしょうか? どうぞご教授よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.1

ISPが使えなくなった場合、簡単にISPが使える方法はありません。パラレルモードかHVSモードで使ってヒューズビットを書き換えるしかないです。 方法は以下の3通りぐらいでしょうか。 ・あきらめる  パラレルモードが可能ならライタなどを用意するのにはコストがかかりますから、1個だけのために用意するぐらいなら、諦めて新しいチップを使う方が楽でしょう。  ISPが使えなくなったチップは残しておいてその数が溜まってきてから後述の手段を講じるほうがいいかと思います。 ・パラレル/HVS対応ライタを使う  純正のSTK500なんかは対応しています。  ISPモードに比べると作例は少ないですが、自作例もあります。  http://elm-chan.org/works/avrx/report.html#AVRXP ・リセッタを作る  リセッタとは、「フューズビットの書き換えだけを行う」だけの単機能ライタです。  ヒューズの書き換えをミスって困る人は結構いるみたいで、作例はいろいろあります。 http://zampoh.cocolog-nifty.com/blog/2008/09/avr---atmega488.html http://www.geocities.jp/doorknov/avr/hvs.html

techhouse
質問者

お礼

mtaka2さん回答ありがとうございます! ヒューズビットが切り替わって動作できなくなってしまったらもう使えなくなるものと思っていたのですが、復活させる方法もあるのですね。いつかやってみたいです。 ありがとうございました。助かりました。

関連するQ&A

  • JTAGICE mk2を接続してもデバッグできない

    現在、ATmega88マイコンでプログラミングをしています。 現在のプログラミングの環境は AVR Studio4.19 Build 730  + WinAVR Cコンパイラの最終版でプログラミングを行っています。 また、この環境はWindows8.1のノートPCでVMware playerでwindows XPを起動してそのXP内でAVR Studioを立ち上げています。 XP内ではAVR Studioでのビルドなどは正常にできています。また、ATJTAGICE mk2をUSBでこのPCに接続する際に、XPのデバイスマネジャーで Jungo ---> JTAGICE mk2 この表示が出てきています。 プログラムで使用しているプロジェクトを開いて、デバッグモードを起動するとwindowが開き JTAGICE mk2の窓でdebugWIREで接続するのか?それともSPI接続を使用するか?という洗濯が出てくるのでSPI接続を選択しています。 この時に次のようなエラーが出てきます ”Failed to enter SPI mode. Check that your squid cable is correctly attached. If the SPIEN fuse is not enabled. the part must be programmed using high-voltage” エラー内容に関してSPIEN fuseがenableでないというような内容なのですが、もう一つの書き込みのAVRISPでこのマイコン内のSPIENの fuseビットを調べても有効になっているようなのですが、これでデバッグを開始することができない状態です。 また、JTAGICE mk2で書き込みを行おうとしても、現在できない状態です。 他にこの問題を解決する方法などございますでしょうか? どうぞ、ご教示頂きご協力頂きますよう、よろしくお願い致します。

  • atmegaxマイコンのPDI端子

    現在Atmel Studio6.2 + JTAGICE3でプログラミングを行っています。ATxmega64Aマイコンを使用してプログラミングを行っていこうと思っているのですが、ファームウェアの書き込みやデバッグなどを今まで使用していたATmega88マイコンなどではmiso,mosi端子などを使用して行っていましたが、ATxmega64AマイコンにはPDI,PDO端子というのが設けられていますが、 この端子だけでJTAGICE3でのファームウェアの書き込みやデバッグは可能でしょうか? miso,mosiの端子は書き込みやデバッグでは必要なくなり、SPI通信専用端子として使用できるようことでしょうか? どうぞ、ご教示頂きますよう、よろしくお願い致します。

  • #define F_CPU という設定

    現在Atmel Studio6.1 + JTAGICE3でATmega88Pのプログラミングを行っています。 https://sourceforge.jp/projects/cc1101driver/scm/svn/tree/head/branches/test002_AVRS6_20140819/test02/ このプロジェクト内で、リアルタイムデバッグを行っているソースコードで、無線モジュールIC CC1101がある端末出力されて受信したデータがあった場合、SPI通信でATmega88PマイコンにSPI通信割り込みでデータを送信して、データ内容で条件が適合するとAtmega88pの特定のeepromアドレスへ受信データ内容の一部データ(IDコード)を書き込むようにしている箇所があります。 u8 setup_oper() 関数内の length = cc1101_rx((u8 *)fifo,0); if(length > 0) { gggLength = length; if(length == sizeof(fifo_t) && fifo-                        ・・・・(中略)・・・・ } リアルタイムデバッグ中に上記のコードで端末側がデータ送信を行っているのに、受信した場合にlength = cc1101_rx((u8 *)fifo,0); のコード部分では受信したデータのlength値が代入されるはずなのですが、それが”0”のままであるため、eepromへの書き込みが行われていないことに気づきました。 いろいろとソースコードの修正を試みたところ、 #define F_CPU 800000UL 元々このように設定されていたコードを #define F_CPU 2000000UL このように変更したところ、正常にCC1101からのSPI通信もeepromへのデータ書き込みもうまくいくことがわかりました。 この”#define F_CPU”というコードはどのような意味があるのかご教示頂きますよう、よろしくお願い致します。 また、現在Atmega88pの元周波数は8MHzを使用したく、8CKDIVのチェックを外しています。 なので、 #define F_CPU 8000000UL このように設定してみたところ、これだとCC1101とのSPI通信ができないようでeeprom書き込みのコードに到達できなくなります。 #define F_CPU 2000000UL これは内部周波数が元の8MHzを4分周した2MHzのことなのだろうか? このように思って2000000ULとしてみたのですが、この考えでよろしいのでしょうか? どうぞ、ご教示頂き増増すよう、よろしくお願い致します。

  • AVR Studio 6.2で書き込みができない

    現在AVR Studio6.2でATmega88Pマイコンのプログラミングを行っています。JTAGICE3を使用してリアルタイムデバッグをおこなっていました。一旦Device Programming機能でファームウェアをATmega88に書き込もうと思ったのですが、ATmega88とJTAGICE3の接続を確認するため、Device signatureを読み取ろうとしたのですが、次のようなエラーが出てきます。 Unable to enter programming mode. Please verify device selection,interface settings,target power and connections to the target device. Look in the details section for more information. たぶんなんですが、今までデバッグを行っていたので、デバッグのヒューズビットがONの状態になっているため、書き込みモードに移行できていないと思われるのですが、 AVR Studio4の場合はデバッグモード時にデバッグモードを無効にする機能があったと思うのですが、Atmel Studio6.2ではこの機能はありますでしょうか? http://d.hatena.ne.jp/oibore_shinsuke/20130421/1366530168 こちらのサイトの方も同じような症状を言っているように思うのですが、こちらの方法をやってみましたが、私の場合は解決できていません。 どうぞ、ご教示頂きますようよろしくお願い致します。

  • ATmega88のSRAMについて。

    ATmega88というアトメル社のマイコンを使ってプログラミングを行っているのですが、スリープモード機能などの消費電力を下げる機能を使った場合に、変数などのSRAMの内容などは、消えてしまう可能性などはあるのでしょうか? なにかパワーダウンモードに入る前には、EEPROMにバックアップする必要などがあるなどの措置をしなければいけないでしょうか? ご存じの方いらっしゃいましたら、どうごご教授よろしくお願い致します。

  • ATmega168でリアルタイムにADC

    WinAVRとATmega168でAD変換をしようとしているのですが、リアルタイムに後進されません。ソースは #include <avr/io.h> int main(){ DDRB = 0xff; DDRC = 0x00; ADCSRA = 0b10000000; ADMUX = 0b00000001; while(1){ ADCSRA |= 0x40; while(ADCSRA & 0x40); PORTB = ADCL; ADCSRA = 0x00; } return 0; } というプログラムです。最初の一回はPORTBの値が変わって変換らしきことをしていることは確認できたのですが、その後に電圧を与えてみても変化がありません。電源を切ってから電圧を変えて又電源をつけると値が変わっています。一回で終了ではなくてリアルタイムに変換するためにはどこら辺をどうすれば良いのかアドバイスください。 よろしくお願いします。

  • ATmega168のクロック数

    ATmega168のクロック数って何MHzくらいですか?

  • atmega328-puの書き込みに付いて。

    atmega328-puの外部と内部のclockの取り扱いについてお尋ねします。 先ずブートローダーを書き込んだり、書き込みに失敗すると外部クロックに切り替わり その後は書き込めなくなる様な説明が有りました。 このことは、二度目以降のブートローダーが書き込めなくなると言うことでしょうか 又、書き込みに失敗した時、そのavrは全く他の用途にも使えなくなり、マイコンとしての 機能を失ってしまうと言うことですか。 それでは、AvrIsp-MkIIの書き込み器を使って、外部クロック用の水晶発振素子等を取り付けて 新しくプログラムを書き込むことは可能ですか。 ブートローダーの解釈として、私が理解しているのは、ブートローダーと言うのは 書き込まれるマイコンが、書き込まれたプログラム通りに働かせる為のプログラム では無く、そのプログラムをAVRマイコンに読み込ませる為の導入プログラム と言うことで良いのでしょうか。 atmega328-puのマイコンに書き込むための説明に、ARDUINOよるブートローダーの書き込み方が沢山紹介されていますが、これはARDUINOのボードでプログラムを書き込んだりするとき スケッチと言うプログラムを作成してARDUINOに書き込みプログラムを走らせますが このスケッチを書き込む時に必要なソフトが、ブートローダーなのでしょうか。 では以前このOK-WAVEで教えていただいた回答内容では、AVRマイコンに書き込む為には AVRISP-MKIIの書き込み器を使えば、ブートローダーは必ずしも必要ないと言うように私は理解 したのですが、正しいのでしょうか。 例えばブートローダーを書き込んだATMEGA328-PUをaruduinoで私が書き込もうとする プログラムをスケッチに書いて書き込んだら、基本的には(動作クロック等は別として) 動作するのでしょうか。 すみません、色々調べたのですが基本的な事の疑問が、解けずにいますので 教えてください。

  • AVR ATMEGA168-PI について

    AVR ATMEGA168-20PUの代用で ATMEGA168-PI を使いたいと思ってます。 ネットでATMEGA168-PIを検索しても出てこなく メーカーページでも探し方が悪いと思いますがATMEGA168-PIという 型番が発見できません。 PICは経験者ですが、AVRは今回が初めてです。 20PU用と書かれた回路図とAVRコードがあり、回路図通り組立て AVRコードもそれを導入するだけのため、コードをMPU型番対応 の修正もできません。 PIを20PUの代用として使えるのか? 基本的な20PUとPIの違いと取扱上の考慮などを教えてください。 よろしくお願いいたします。

  • ATmega88でマイコン動作がフリーズする。

    現在ATmega88マイコンを使っているのですが、パワーダウンモード機能で消費電流をおさえて、和入り込みINT1の入力の時だけウェークアップさせるようなプログラムを組んでいるのですが、この割り込みINT1を発生させても全く受け付けなくなる現象が発生しました(INT1のISRルーチンでLEDを点灯でウェークアップ動作を確認) 電源は3Vのリチウム電池を使用しています。 このような現象の対策として考えられることはありませんでしょうか? ご存じの方いらっしゃいましたら、ご教授の程よろしくお願い致します。