• ベストアンサー

AVRマイコンのRESET端子について

AVRマイコンのRESET端子について質問させて頂きます。 RESET端子が汎用ポートと兼用の場合、プログラム書き込み時に、その端子をRESETか汎用ポートかをヒューズビットで選択できますが、汎用ポートとしてプログラムを書き込んだ場合、再度SPI通信でプログラムの書き込みを行うのは不可能なのでしょうか? よろしくお願い致します。

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

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

リセット端子を汎用IO設定にしてしまうと、もうISPによる書き込みはできなくなります。 プログラミングやヒューズビットの書き換えは、パラレルモードかHVSモードで使うしかありません。 そうなってしまったAVRチップを、簡単にISPが使えるように戻す方法はないです。 方法は以下の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

ron_nast
質問者

お礼

大変参考になりました!ありがとうございました!!

関連するQ&A

  • atmegaxマイコンのPDI端子

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

  • マイコンボード上のポートと端子の違いについて

    こんにちは。 現在、マイコンボードを使って、組込みシステムについて勉強しています。 マイコンボードには、CPUとメモリと入出力ポートが搭載されています。 このマイコンボードのLSIマニュアルを読むと、 データの出入り口となる場所に、 PA0/AN0/TM0IOA/SEG24 といった表記がされています。 この表記の場合は、マニュアルによると、それぞれ ポートAのビット0/アナログ入力0/タイマ0入出力/セグメント24 という意味だそうです。 ポートAのビット0以外は、端子として使われており、 「ポートと端子の兼用」といった説明がされていました。 この「ポート」と「端子」の違いについて、いまいち理解できないでいます。 Wikipediaなどでそれぞれの説明を読んでも、上手くイメージがつかめません。 ハードウェアについて詳しい方がいらっしゃれば、分かりやすく説明して頂けませんでしょうか? よろしくお願い致します。

  • AVR SPI mkiiの修理窓口

    Atmelのマイコンを使ってプログラミングなどをしております。現在持っているAVR SPI mkiiという書き込み機を使っているのですが、ここ最近これをPCとUSBで接続しても認識しなくなりマイコンに書き込みができなくなってしまいました。 このAVR SPI mkiiは5年くらい前に秋葉原で購入したものです。この書き込み機の修理依頼などをATMELの窓口などご存じの方いらっしゃいませんでしょうか? どうぞ、ご教授の程よろしくお願い致します。

  • AVRマイコンの内部EEPROMの値について

    AVRマイコンの内部EEPROMの値について AVRマイコンにて、デバイスシャットダウン時にあるデータを内部EEPROMに保存し、起動時にその前回保存したデータを読み込むという制御を考えています。 ここで質問ですが、初めてプログラムを焼いたデバイスに電源を投入した場合に、内部EEPROMに入っている値を読み込んだ場合、その値は不定値なのでしょうか? それとも決められた値なのでしょうか? ソースの対処はどのようにすればよろしいでしょうか? ご教授下さい。 よろしくお願い致します。

  • AVRーUSBについて

    AVRマイコンを使って以下の機能を実装しようとおもっています。 ・AVRからデータをノートパソコンに送信し、受信したデータをパソコンの画面に表示する ・ノートパソコンからAVRにデータを送信する ノートパソコンのためUSBポートしかないのでUSB通信にしようと思っています。あとFT232などのUSBシリアル変換機も持ってないのでUSBの通信の仕方で通信しようと思っています。 そこで質問なのですがAVRでUSB通信を実現できるらしいAVR-USBライブラリを使って上記の機能を実装しようと思っているのですが配布サイトからダウンロードしたもののどのソースを使ってどの関数を使うのかソースを読んで見たもののわかりません。とうかアドバイスや参考になるサイトや資料があったら教えてください. あと、もうひとつ質問なのですがUSBとパソコンの通信の仕方はどのように行っているのでしょうか?信号線が二本だからI2Cなのかとおもっているのですがそうなのでしょうか? どうかよろしくおねがいします。

  • マイコンと外部とのインターフェース

    マイコン初心者です。 マイコンと、外部デバイスとのインターフェースについて教えて下さい。 マイコンとフラッシュメモリ、UART(パラレル→シリアル変換)等を接続する場合、マイコンのアドレスバス、データバスなど外部バスをそれらデバイスへ接続して、アドレスを指定、データを読み書きするような回路を見てきました。 これと同じようなことを、アドレスバス、データバスがマイコンの外に出ていないタイプ(シングルチップマイコン?)でやろうとした場合、どういった制御方法があるのでしょうか? 汎用入出力ポートを駆使して制御するのでしょうか? それともシリアル(SPIやI2C)で制御できるようなデバイスを選択するべきなのでしょうか。 知識不足で不明瞭な質問かと思いますが、アドバイスよろしくお願いいたします。

  • SPI通信制御付きの音声ICをI2Cで制御可能?

    SPI通信のRX端子搭載で、音声の再生や停止などを制御できる音声ICをATMELのAtmega88Pというマイコンで行おうと思っているのですが、Atmega88PにはSPI機能の端子が1つだけで、デバッガの接続のみに専念させたいと考えています。 一応、空いている端子があるので、プログラムで擬似的にSPI通信の作ってそれで制御することを考えているのですが、Atmega88PのI2C端子も空いているのですが、これをSPIの送信のみに特化したような使い方はできますでしょうか? 確か、I2CはACKのビットが入ってきて、単純に1バイトを8ビットで送信するという感じではダメだったような気がするのですが、可能でしょうか? どうぞ、ご教示頂きますよう宜しくお願い致します。

  • AVRマイコン UART動作異常

    AVRマイコンのATmega168にてPCとRS-232Cにてシリアル通信(UART)を行うと最初のスタートビット'L'が正常に出ず、スタートビット'L'の後すぐに'H'に戻ってその後データビットを送っています。2回目以降のスタートビットは正常に'L'が指定したボーレートの時間幅で出ており、問題はありません。最初のスタートビットが正常に出ない原因がわかりませんので教えてください。 システムクロック:1MHz(内部発振器のみ) ボーレート:4800bps データビット数:8bit ストップビット数:1bit パリティビット数:なし -------------------------------------------- #include <avr/io.h> #include <util/delay.h> #include <avr/pgmspace.h> #define sbi(addr,bit) addr |= (1<<bit) #define cbi(addr,bit) addr &= ~(1<<bit) void port_init(void){ PORTB = 0xFE; DDRB = 0xFF; asm("NOP"); } void uart_init(void){ sbi(DDRD,1); cbi(DDRD,0); asm("NOP"); } void uart_putchar(unsigned char c){ loop_until_bit_is_set(UCSR0A,UDRE0); // asm("NOP"); UDR0 = c; } void _delay_1s(void){ int i; for(i=0;i<100;i++){ _delay_ms(10); } } int main(void) { port_init(); uart_init(); UCSR0B = _BV(TXEN0); UCSR0C = 0b00000110; UBRR0H = (uint8_t)0; UBRR0L = (uint8_t)12; while(1) { uart_putchar(0b01011010); _delay_1s(); } return 0; } -----------------------------------------------

  • AVRマイコンで4bit分のデータをシリアルで送る

    お世話になります。AVRマイコン初心者です。 ATtiny2313 を使い、メロディICの入力端子に4bit分のデータをシリアルで送りたいです。 メロディIC → SM11125ABV (セイコーNPC製) データシート → ftp://ftp.npc.co.jp/pub/pdf_j/1125abv_nc0720a.pdf やりたいことは、SM1125ABVの入力端子SI, SCに選曲のためのデータを送り、選曲することです。 データシートにあるように、1bit分のパルス幅は2μsです。 ようは、この幅のパルスを出力できればいいのですが・・・・ 何から始めればよいのか・・・・ 検索したら、UARTというのが見つかりましたが、例がやたらと文字列の送受信で… 文字列の部分を0 ,1 に置き換えたら、H、Lのパルスが出力されてくれるのか??? それとも、タイマで割り込みのタイミングでH、LをI/Oポートから出力させればいいのか??? WinAVRを使います。 どうかアドバイスよろしくお願いいたします。

  • 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 こちらのサイトの方も同じような症状を言っているように思うのですが、こちらの方法をやってみましたが、私の場合は解決できていません。 どうぞ、ご教示頂きますようよろしくお願い致します。