• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ATxmegaマイコンのヒューズビットのコード設定)

ATxmegaマイコンのヒューズビットのコード設定

このQ&Aのポイント
  • ATxmega64A3Uでのヒューズビット設定を変更し、消費電流を低下させる方法について
  • ATmega専用ライターを使用してヒューズビットのBODPD機能をdisableに設定し、消費電流を軽減する方法について
  • プログラムを使用して電源起動時にヒューズビット設定を変更する方法について

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

  • ベストアンサー
  • kaba__san
  • ベストアンサー率46% (28/60)
回答No.4

ソースのどこかにこれ入れます。 FUSES = {.FUSEBYTE2 = FUSES2_BODPD_DISABLED_gc,}; これだとFUSE2の他のビットは0になりますから、 それが困るなら自分でパラメータ追加してください。 全FUSEBYTE(0-6)をソース内に書けます。 ロックビットも書けます。 100台全部を手動でヒューズ書き込むなんて脳筋ワザ、私には出来ませんや。

techhouse
質問者

お礼

回答頂きありがとうございます。 フューズビットで書き込みたい値は決まっているので、ヒューズビット設定の画面でコピーできる値から次のようなプログラムを作成しました。 FUSES = { //JTAGUSERID = 0xFF //WDWP = 8CLK //WDP = 8CLK //BOOTRST = APPLICATION //TOSCSEL = XTAL //BODPD = DISABLED //RSTDISBL = [ ] //SUT = 0MS //WDLOCK = [ ] //JTAGEN = [ ] //BODACT = CONTINUOUS //EESAVE = [ ] //BODLVL = 2V2 .FUSEBYTE0 = 0xFF, .FUSEBYTE1 = 0x00, .FUSEBYTE2 = 0xFF, .FUSEBYTE4 = 0xFF, .FUSEBYTE5 = 0xEC, }; このコードをmain.cに追加して、ビルド実行してATxmega64a3uに書き込みました。 しかし、書き込んだ後にわざとBODPDをcontinuousに変更してみたりして、リセットしてプログラムを再起動してみてもDisableに自動的に変更してくれません。 これは、このFUSESのプログラムが機能していないように見えるのですが、他にすべきことはありますでしょうか?

すると、全ての回答が全文表示されます。

その他の回答 (5)

  • kaba__san
  • ベストアンサー率46% (28/60)
回答No.6

う~ん・・・基本的な事が分かってない・・・・ 『FUSES=』ってのは『コード(プログラム)』じゃない。 CPUがヒューズを『設定』することなんてできない。 データシート読め。(←何度目だ?) その部分はヒューズ設定情報としてelfファイルに埋め込まれ、ライターが書き込みます。 ライター側でヒューズ書き込みオプション有効にしていればね。 その後はもちろんライターで内容を読める。 これでわからないなら全数手動で設定しなさいな。

techhouse
質問者

お礼

回答頂きありがとうございます。 使用しているAtmelStudio6.2のDevice Programmingを調べてみたところ、Production fileという項目で ”Program device from ELF production file”という欄を見つけました。ここで、FlashとFusesのチェックボックスを有効にしてelfファイルをプログラムすると、コード内に設定したFuseの設定になったことを確認できました。 どうも、これならfuse設定も一緒にかきこんでくれるようですね。 助かります。

すると、全ての回答が全文表示されます。
  • kaba__san
  • ベストアンサー率46% (28/60)
回答No.5

ホンット基本的な事を勉強しましょうよ。 「ヒューズ」の意味わかってます? BODPDはヒューズでしか設定できません。 あなたが自らの手でヒューズ設定をcontinuousに変更したんなら、 100万回再起動したってcontinuousですよ。 勝手にdisableに戻ったりしたら怖いわ。

techhouse
質問者

お礼

回答頂きありがとうございます。 ヒューズの設定はcontinuousになっていたとしても、 コード内で FUSES = { //JTAGUSERID = 0xFF //WDWP = 8CLK //WDP = 8CLK //BOOTRST = APPLICATION //TOSCSEL = XTAL //BODPD = DISABLED //RSTDISBL = [ ] //SUT = 0MS //WDLOCK = [ ] //JTAGEN = [ ] //BODACT = CONTINUOUS //EESAVE = [ ] //BODLVL = 2V2 .FUSEBYTE0 = 0xFF, .FUSEBYTE1 = 0x00, .FUSEBYTE2 = 0xFF, .FUSEBYTE4 = 0xFF, .FUSEBYTE5 = 0xEC, }; BODPDはDisableの設定にしたならば、Disableになっているということでしょうか? このFUSESの設定が有効になっているかどうかを確認する方法などはありますでしょうか?

すると、全ての回答が全文表示されます。
  • kaba__san
  • ベストアンサー率46% (28/60)
回答No.3

ファーム書き換え作業があるなら、ファームにヒューズ設定も含めればいいんですよ。 elfファイルを使っているのならね。

techhouse
質問者

お礼

回答頂きありがとうございます。 例えばなんですが、 ・BODPD設定はDisable これのプログラム例はどのようにすればよいのですしょうか?

すると、全ての回答が全文表示されます。
  • TIGANS
  • ベストアンサー率35% (245/681)
回答No.2

過去の記憶なのでウソを言うかも知れません。 たしかヒューズビットは外部プログラマからは変更できましたが CPUで実行できるプログラムからは自己変更できなかった気がします。 ヒューズビットは一度書き込めば、FlashやEE-PROMのように 消える事はないですから、用途に合わせて予めプログラマで設定する しかないように思います。

techhouse
質問者

お礼

回答頂きありがとうございます。 近日、数百個の基板に同じファームウェアを書き込む作業あります。今までも同じような作業の経験があるのですが、その際はファームウェア書き込みと同時にヒューズビットを手動でやってきてます。 今回からパワーダウンモード時の消費電流削減のためにBODPD設定をDisable設定にしたいのですが、ファームウェア書き込みだけ行った時点で同時に同じことができないかと思ったわけです。 とりあえずは、今までと同じ作業で進めてみようと思います。

すると、全ての回答が全文表示されます。
  • kaba__san
  • ベストアンサー率46% (28/60)
回答No.1

BOD設定をいじれるのか、データシートを調べましょう。 簡単です。PDF開いてctrl+Fを押し、「BOD」と入れればいいのです。

techhouse
質問者

お礼

回答頂きありがとうございます。 助かります。

すると、全ての回答が全文表示されます。

関連するQ&A