Тактовая частота микроконтроллера и некоторые другие параметры определяются установкой специальных регистров в 0 или 1. Биты этих восьми-битных регистров называют фьюзами (fuses).

Подключив к Arduino Uno программатор USBasp, при помощи программы avrdude мы считали сигнатуру микроконтроллера и его фьюзы. В микроконтроллере ATMega328P, установленном на плате Arduino UNO их 3: LOW, HIGH, EXTENDED.

sudo avrdude -p m328P -c usbasp

avrdude: AVR device initialized and ready to accept instructions

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

avrdude: Device signature = 0x1e950f (probably m328p)

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

avrdude done.  Thank you.

Здесь значения фьюзов представлены в шестнадцатеричной системе счисления.

  • LOW : FF
  • HIGH: DE
  • EXTENDED: FD

Если установить фьюзы микроконтроллера ATMega328P в E:FD, H:DF, L:E2, то микроконтроллер сможет работать на частоте 8 MHz без кварца.

sudo avrdude -p m328P -c usbasp -Uhfuse:w:0xdf:m -Ulfuse:w:0xe2:m

avrdude: AVR device initialized and ready to accept instructions

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

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

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

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xdf:
avrdude: load data hfuse data from input file 0xdf:
avrdude: input file 0xdf 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 "0xe2"
avrdude: writing lfuse (1 bytes):

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

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: safemode: Fuses OK (E:FD, H:DF, L:E2)

avrdude done.  Thank you.

Но, следует учесть, что не будет работать загрузчик (BootLoiader) и программы в микроконтроллере будут выполняться медленнее. Например, измеряемое с помощью датчика UltraSonic расстояние будет определено как в несколько раз меньше реального.

В следующей статье «ATMega328 в Arduino без кварца» показано, как перезаписать загрузчик для ATMega328, работающего на частоте 8 МГц без кварца и как его полноценно использовать в среде разработки Ардуино.