LoginSignup
5
3

More than 5 years have passed since last update.

AVRをクリスタル(=水晶発振器)で動かす

Last updated at Posted at 2014-05-14

fuseの計算

ArduinoISPのデフォルトで動いているmega88pを
20MHzのクリスタルで動作するようにfuseを書き換えます。

efuse=0x07,hfuse=0xDDはそのまま。

lfuse=0xE2を

bit7:CKDIV8 = 1 8分周しない
bit6:CKOUT = 1 クロック出力しない
bit5:SUT1 = 1
bit4:SUT0 = 1 => 遅い起動(=安定)
bit3:CKSEL3 = 0
bit2:CKSEL2 = 1
bit1:CKSEL1 = 1 => 0.4-20MHz 全振幅発振器
bit0:CKSEL0 = 1 => 外部クリスタル

lfuse=0xF7 にする。

クリスタルを接続する

クリスタル20MHzと12-22pHのコンデンサを接続。
(とりあえず、コンデンサなしでも動いてはいる)

fuseを書く

avrdudeでやってもいいが、boards.txtに定義を追加すればArduinoIDEから書けるはず。

###########################################
avr88p20.name=ATmega88P / Ext.20MHz
avr88p20.upload.maximum_size=8192
avr88p20.bootloader.low_fuses=0xf7
avr88p20.bootloader.high_fuses=0xdd
avr88p20.bootloader.extended_fuses=0x07
avr88p20.bootloader.path=dummy
avr88p20.bootloader.file=dummy.hex
avr88p20.bootloader.unlock_bits=0x3F
avr88p20.bootloader.lock_bits=0x3F
avr88p20.build.mcu=atmega88p
avr88p20.build.f_cpu=20000000L
avr88p20.build.core=arduino:arduino
avr88p20.build.variant=standard

これを追加して、選択して、"ブートローダ書き込み"でfuseが書かれる。
その後、スケッチを再度送信する。

delay(1000)で1秒なことをかくにん。

クリスタルを抜いて、動作がとまればクロックの変更大成功。

シリアル通信が115200 baudでも文字化けしない。やったぜ。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3