What are fuses? How to work with fuse bits on AVR microcontrollers

Sdílet
Vložit
  • čas přidán 8. 07. 2024
  • In this video we will talk about what fuses are, what they are for and how to work with fuses on AVR microcontrollers. In the video I will demonstrate the fuse calculator and how you can change fuse bits with the fuse calculator.
    I will show an example of changing the fuses on the ATtiny13 microcontroller. But this method will work for other AVR microcontrollers too. In the video, I will first change the fuse of the CKDIV8 and show what happens. And then I will show the result of changing the RSTDISBL fuse. And you will see how easy it is to increase the number of available I / O pins by one.
    An Arduino UNO is used as an ISP programmer with a module placed on top for the convenience of firmware ATtiny microcontrollers.
    Link to the program for working with fuses from the video - drive.google.com/file/d/117L1...
    Very briefly about some fuses - drive.google.com/file/d/13Tii...
    Links to electronic components from the video:
    - ATtiny13 DIP - alii.pub/62nc0s
    - ATtiny13 SOP package - alii.pub/62nc25
    - ATtiny85 DIP package - alii.pub/62nc3w
    - SOP8-DIP8 adapter for ATtiny13 / 25/45/85 - alii.pub/62nc43
    0:00 Introduction
    0:50 What are fuses?
    1:58 Fuses calculator
    3:45 Decoding some fuses
    7:32 Read and change fuses
    9:33 Changing the fuse RSTDISBL
  • Věda a technologie

Komentáře • 42

  • @pindzak
    @pindzak Před 3 lety +2

    Спасибо, у вас, пожалуй, самое понятное объяснение фьюзов, что я нашёл для себя. И слушать приятно

  • @pupkin204
    @pupkin204 Před 3 lety

    Очень будет интересно осмотреть ваш метод востановки заводских фьюз.

    • @neoalternator
      @neoalternator  Před 3 lety

      На следующих выходных планирую видео

  • @sergey-380
    @sergey-380 Před 3 lety +2

    дякую

  • @yl923
    @yl923 Před rokem

    А про мега64 фьюз биты можно рассказать?

  • @RomaRingo
    @RomaRingo Před 2 lety

    Для работы со скетчами, подойдут фузе биты по умолчанию на тини13 ? не хочу RST портить

    • @neoalternator
      @neoalternator  Před 2 lety

      В большинстве случаев - да.

  • @radikmullayanov8507
    @radikmullayanov8507 Před 3 měsíci

    Не получилось считать фьюзы с помощью батника. К какому бы порту USB не подключался, всегда подключается com1.

  • @ivannovosyolov115
    @ivannovosyolov115 Před 3 lety +1

    Расскажите об ESP32.

    • @neoalternator
      @neoalternator  Před 3 lety

      Будет о ESP32. Но в начале о ESP8266

  • @user-wq4sd6tr6x
    @user-wq4sd6tr6x Před 3 lety

    Если светодиод при команде delay 1000 светит ровно одну секунду, значит реальная тактовая частота 1 МГц? И увеличить быстродействие программы можно только через фьюзы, правильно?

    • @neoalternator
      @neoalternator  Před 3 lety +1

      Delay всё же функция, которая учитывая частоту, для каждого мк имеет свой поправочный коэффициент. Т.е. для тини13 это может быть так, а для других мк не так. В комментариях к примеру blink_using_timer для тини13 показано как рассчитывается пауза в зависимости от частоты. Изменить тактовую частоту можно и в arduino ide в том же блоке, где плата выбирается. А через фьюзы можно убрать делитель тактовой частоты на 8 если он установлен.

    • @user-wq4sd6tr6x
      @user-wq4sd6tr6x Před 3 lety

      @@neoalternator Мне кажется, делитель на 8 устанавливают для того, чтобы повысить точность работы процессора в 8 раз, снизить погрешность отсчитывания времени. Но тактовую частоту выполнения команд делитель снижает в те же 8 раз. То есть процессор молотит с частотой 9, а команды выполняет с частотой 1,2, зато промежутки времени между командами в 8 раз точнее, чем без делителя.
      В Ардуино иде можно выбрать частоту, но нельзя отключить делитель, потому что это стандартная функция, улучшающая работу МК. Делитель можно отключить только через фьюзы, вы продемонстрировали как это сделать и показали результат, большое спасибо. Мне как раз в одном деле нужна максимальная частота считывания с датчика, а точность временных интервалов в этом деле не важна.

    • @neoalternator
      @neoalternator  Před 3 lety +1

      @@user-wq4sd6tr6x Вы все верно написали. Но если нужна большая частота, может быть рассмотреть кого-то из семейства STM32?

  • @trewerguli1727
    @trewerguli1727 Před 3 lety

    Можете подсказать, digispark при подключении к пк, появляется и сразу пропадает в диспетчере устройств, буквально за секунду. Это нормально или нет?

    • @neoalternator
      @neoalternator  Před 3 lety

      Попробуйте отключить антивирусную программу, если есть. Возможно она блокирует, как вредоносное устройство. Второй вариант - плохой контакт с юсб портом компьютера. Светодиод на плате горит?

    • @neoalternator
      @neoalternator  Před 3 lety

      А еще порт должен быть обязательно usb 2.0

    • @trewerguli1727
      @trewerguli1727 Před 3 lety

      @@neoalternator пробовал на двух ноутбуках, на одном точно одни 2-е порты. На обоих чистая вин 10. Спасибо.

  • @user-bs4jn3ms8h
    @user-bs4jn3ms8h Před 3 lety

    Привет. Спасибо за ценную информацию в твоих видео. Пытаюсь оживить тиньки купленные на Али - не шьются через ISP.
    Пробую сначала считать фьюзы твоей утилитой, но при выборе "Read fuses" выскакивает ошибка avrdude.exe "Запуск программы невозможен, так как на компьютере отсутствует libusb0.dll. Попробуйте переустановить программу".
    Такое же сообщение вываливается, при попытке чтения лок-битов и стирания чипа, а также когда пытаюсь запустить avrdude.exe из папки с твоей утилитой. Версия IDE 1.8.12.
    Помоги если сможешь. Лежат три собранные устройства, думал ща залью прошивки через ISP и всё. Ан хрен там. И того имеем неделю головной боли, три запаянных кирпича и 7 в пакетике. Это 13-е.
    И ещё 5 шт. 25-тых. С ними тоже наверное такое же. Пробовал вместо одной тринадцатой подкинуть двадцать пятую, перепаял на плату, пробую прошивать то же самое.
    Может попробовать сразу прожечь их высоковольтным программатором, хотя, причем тут указанная мной ошибка. Фьюзы ведь должны читаться в любом случае, только разве что Reset заблокирован.
    Помоги, пожалуйста.

    • @user-bs4jn3ms8h
      @user-bs4jn3ms8h Před 3 lety

      Пробовал только что прожигать программатором - результата ноль. Монитор порта останавливается на операции "read fuses". Даже на тех 25-ых тиньках, которые ещё не трогал.
      Это капец какой-то.....

    • @user-bs4jn3ms8h
      @user-bs4jn3ms8h Před 3 lety

      Поставил версию 1.8.8 как у тебя в видео - результата НОЛЬ. При попытке чтения фьюзов 25-тых тинек которые ещё не были в использовании лезет та же ошибка про отсутствие libusb0.dll. В чем подвох?
      Где его взять, бл.... , если он даже при переустановке IDE не появляется?

    • @neoalternator
      @neoalternator  Před 3 lety

      Приветствую! Вообще это стандартная библиотека. Должа появляться при установке Arduino IDE. Вне зависимости от версии. У меня она там же, где и avrdude.exe в папке C:\Program Files (x86)\Arduino\hardware\tools\avr\bin Если ее там нет, вот загрузил ее на гугло-диск, можно скачать и туда закинуть drive.google.com/file/d/1P7aoNqOVfeeFZ7bzFABZKMFKYGJ8ApYY/view?usp=sharing

    • @neoalternator
      @neoalternator  Před 3 lety

      @@user-bs4jn3ms8h да, кстати, если библиотека эта всё же есть, просто avrdude ее не находит, т.к. она не там, где прописано в его конфигах, то можно наоборот, взять из папки C:\Program Files (x86)\Arduino\hardware\tools\avr\bin файл avrdude.exe и из соседней папки etc файл avrdude.conf и заменить ими аналогичные файлы в моей утилите. Т.е. только BAT-файл мой оставить. Может сработать.

    • @user-bs4jn3ms8h
      @user-bs4jn3ms8h Před 3 lety

      @@neoalternator Спасибо, что отозвался. У меня тоже она там есть, но почему не работает не пойму. Это ведь библиотека для usb портов, так?
      Пробовал копировать её с диска С в папку с твоей утилитой - ошибка пропала, но заработало не так как у тебя в видео. Всё что получаю в результате, похоже на то, что выдаёт IDE внизу по окончании безуспешной загрузки. Что заметил:
      -using programmer: avrisp. Почему?
      - и в конце концов печальное 0x000000..... и так далее.
      Папки с утилитами есть разница куда ложить: на С или на D?

  • @user-jd6mf8en2t
    @user-jd6mf8en2t Před 3 lety

    Таак, вобщем вначале лучше залить прошивку а потом менять фьюзы правильно понял?

    • @neoalternator
      @neoalternator  Před 3 lety

      После только spien и rstdisbl. Т.к. потом мк не прошить. Остальные можно менять и до загрузки и во время загрузки.

    • @user-jd6mf8en2t
      @user-jd6mf8en2t Před 3 lety

      @@neoalternator Спасибо за ответ! Мне как раз reset и нужно поменять

  • @GrandFRX
    @GrandFRX Před 4 měsíci

    считываю. все ок
    перезаписываю на 0A FF
    avrdude: AVR device initialized and ready to accept instructions
    Reading | ################################################## | 100% 0.02s
    avrdude: Device signature = 0x1e9007 (probably t13)
    avrdude: safemode: Fuses OK (E:FF, H:FB, L:39)
    avrdude done. Thank you.
    на этом всё перезапись не удалась

  • @user-ms3id7jv7v
    @user-ms3id7jv7v Před 6 měsíci

    Эй ти тайни или просто аттини тогда уж