2023年2月11日土曜日

avrdude6 on ubuntu, ヒューズビットかきかえ

usbispはもちろんだが、ウインドウとちがってウブンツではarduinoIDEでもavrdudeが

つかえない。しかし、コマンドラインではウブンツでばっちりうごいた!

ーーーーーーーーーーーーーーーーーーーーーーーー

参考サイト 

https://www.jp3cyc.jp/2019/run-arduino-with-internal-clock/

読み出しコマンド

avrdude -c usbasp -p m328p -U lfuse:r:con:h -U hfuse:r:con:h -U efuse:r:con:h

ーーーーーーーーーーーーーーーーーーーーーー上記でヒューズビットをよみだした結果

avrdude: AVR device initialized and ready to accept instructions


Reading | ################################################## | 100% 0.00s


avrdude: Device signature = 0x1e950f (probably m328p)

avrdude: reading hfuse memory:


Reading | ################################################## | 100% 0.00s


avrdude: writing output file "con"


avrdude: safemode: Fuses OK (E:FD, H:DE, L:E2)


avrdude done.  Thank you.

ーーーーーーーーーーーーーーーーーーーーーーーーーー

書き込みコマンド

https://www.jp3cyc.jp/2019/run-arduino-with-internal-clock/を一部改変
まず328pに16mhz発振併用としておいて
avrdude -c usbasp -p m328p -U lfuse:w:0xe2:m -U hfuse:w:0xde:m -U efuse:w:0xfd:m
で書き換え 16mhz発振は以後は不要
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading input file "0xe2"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xe2:
avrdude: load data lfuse data from input file 0xe2:
avrdude: input file 0xe2 contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified
avrdude: reading input file "0xde"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xde:
avrdude: load data hfuse data from input file 0xde:
avrdude: input file 0xde contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xfd"
avrdude: writing efuse (1 bytes):

Writing | ################################################## | 100% 0.01s

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.00s

avrdude: verifying ...
avrdude: 1 bytes of efuse verified

avrdude: safemode: Fuses OK (E:FD, H:DE, L:E2)

avrdude done.  Thank you.
ーーーーーーーーーーーーーーーーーーーーーー
以下は吉野さんよりattiny85のお話です

Microsoft Windows [Version 10.0.19045.2486]
(c) Microsoft Corporation. All rights reserved.

C:\Users\owner>avrdude -c usbasp -p t85 -U lfuse:r:con:h -U hfuse:r:con:h -U efuse:r:con:h

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e930b (probably t85)
avrdude: reading lfuse memory:

Reading | ################################################## | 100% 0.00s

avrdude: writing output file "con"
0xe2
avrdude: reading hfuse memory:

Reading | ################################################## | 100% 0.00s

avrdude: writing output file "con"
0xdf
avrdude: reading efuse memory:

Reading | ################################################## | 100% 0.00s

avrdude: writing output file "con"
0xff

avrdude done.  Thank you.

20.2. ヒューズ ビット
ATtiny25/45/85には表20-3.~5.で記述されるように3つのヒューズ バイトがあります。ヒューズはプログラムされると、論理0として読まれることに注意してください。

表20-3. 拡張ヒューズ バイト一覧
名称           ビット 意味                                      既定値
-              7~1                                           1 (非プログラム)
SELFPRGEN (注1) 0   自己プログラミング機能許可。                  1 (非プログラム) 自己プログラミング不許可
注1: SPM命令許可。93頁の「フラッシュ メモリの自己プログラミング」をご覧ください。

表20-4. ヒューズ上位バイト一覧
名称           ビット 意味                                          既定値
RSTDISBL(注1,2) 7   PB5がI/OピンかまたはRESETピンかを選択します。   1 (非プログラム) PB5はRESETピン
DWEN (注1,2,3)  6   デバッグWIRE機能許可。                         1 (非プログラム) デバッグWIRE不許可
SPIEN (注4)     5   低電圧直列プログラミング許可。                    0 (プログラム) 低電圧直列プログラミング許可
WDTON (注5)     4   ウォッチドッグ タイマ常時有効。                       1 (非プログラム) WDTはWDTCRで許可
EESAVE          3   チップ消去からEEPROM内容を保護。                1 (非プログラム) EEPROMは未保護
BODLEVEL2       2                                                 1 (非プログラム)
BODLEVEL1       1 低電圧検出(BOD)リセットの制御と検出電圧選択。 (注6) 1 (非プログラム)
BODLEVEL0       0                                                 1 (非プログラム)

注1: RESETピンの使用法を制御します。39頁の「ポートBの交換機能」をご覧ください。
注2: これらのヒューズがプログラム(0)されてしまった後、デバイスは高電圧直列動作でだけプログラミングできます。
注3: 施錠ビット保護が必要とされるとき、非プログラム(1)にされなければなりません。前頁の「プログラム メモリとデータ メモリ用施錠ビット」を
ご覧ください。
注4: このヒューズは低電圧直列プログラミングでアクセスできません。
注5: 詳細については31頁の「WDTCR - ウォッチドッグ タイマ制御レジスタ」をご覧ください。
注6: 111頁の「BODLEVELヒューズ符号化」表をご覧ください。

表20-5. ヒューズ下位バイト一覧
名称         ビット 意味                  既定値
CKDIV8 (注1) 7    システム クロック 8分周選択。 0 (プログラム) 8分周
CKOUT (注2)  6    システム クロック出力許可。   1 (非プログラム) 不許可
SUT1         5                          1 (非プログラム) 起動時間選択。 (注3) 
SUT0         4                          0 (プログラム)
CKSEL3       3                          0 (プログラム)
CKSEL2       2                          0 (プログラム) クロック種別選択。 (注4) 
CKSEL1       1                          1 (非プログラム)
CKSEL0       0                          0 (プログラム)

注1: 詳細については20頁の「システム クロック前置分周器」をご覧ください。
注2: (PB0)ピンに出力することをシステム クロックに許します。詳細については20頁の「クロック出力緩衝部」をご覧ください。
注3: 既定値は既定クロック元に対する最大起動時間を与えます。詳細については18頁の表6-7.をご覧ください。
注4: 既定設定は8MHz校正付き内蔵RC発振器を選択します。詳細については18頁の表6-6.をご覧ください。

施錠ビット1(LB1)がプログラム(0)されると、ヒューズ ビットが固定されることに注意してください。施錠ビットをプログラム(0)する前にヒューズ ビットを
プログラミング(書き込み)してください。ヒューズ ビットの状態はチップ消去によって影響されません。
ヒューズ ビットはデバイス ファームウェアによって読むこともできます。94頁の「ソフトウェアからの施錠,ヒューズと識票のデータ読み出し」項をご覧ください。

20.2.1. ヒューズのラッチ
ヒューズ値はデバイスがプログラミング動作へ移行する時にラッチされ、ヒューズ値への変更はデバイスがプログラミング動作を去るまで無効です。
これは一旦プログラム(0)されると直ぐに効果があるEESAVEヒューズには適用されません。ヒューズは電源投入でもラッチされます

0 件のコメント:

コメントを投稿