Всё о фьюзах...
- Сообщения: 68
- Зарегистрирован: Ср янв 18, 2006 23:56:55
- Реклама
- Сообщения: 336
- Зарегистрирован: Пн мар 20, 2006 13:05:08
для конфигурации мк.
Я просто верю в то, что рушить догмы - лучший способ не стареть.
fuse - биты - это биты, позволяющие задавать аппаратную конфигурацию контроллера.Anonymous писал(а):Я тоже спрашивал, но потом пришлось смириться.
Например - от чего он будет тактироваться (кварц, RC-цепь, встренный тактовый генератор), можно ли после программирования считать его память или нет (защита от копирования программ), в старших моделях есть fuse-биты совместимости с младшими. Например, atmega8535 совместим по ногам с AT90S8535. И переферия (дополнительная) atmega8535 не доступна, если стоит бит совместимости с AT90S8535.
Кстати, для начинающих, есть ньюанс - fuse-биты совместимости по умолчанию УСТАНОВЛЕНЫ в режим совместимости с младшими моделями. Поэтому, чтобы получить доступ ко всей переферии мег, этот бит надо сбросить!
Фьюз SPIEN - SPI ENable - отвечает за работоспособность SPI.
Вот его-то и не стоит трогать...
Вот его-то и не стоит трогать...
- Реклама
а где мона почитать о фьюзах, о их смисле ?
с толком с чувством с растановкой.... а то не понятно куда какие биты писать, у мя мега шьётся, но не работает
с толком с чувством с растановкой.... а то не понятно куда какие биты писать, у мя мега шьётся, но не работает
...чужая глупость не делает тебя умней...
Незнайка.
Подскажи, а как их там в авриал32, в командной строке задать?
Подскажи, а как их там в авриал32, в командной строке задать?
...чужая глупость не делает тебя умней...
я аврилом не пользуюсь но в справке написано так
-f<fuselist> -- список fuses для тех чипов, в которых они шьются по ISP.
<fuselist> выглядит как fusename=value,fusename=value,bytename=value...
value - ШЕСТНАДЦАТЕРИЧНОЕ значение без префиксов и суффиксов.
Для однобитовых fuse добавлены значения ON и OFF (прошить и стереть,
0 и 1 соответственно).
ВНИМАНИЕ! Начиная с версии 1.23 НЕ ПОДДЕРЖИВАЮТСЯ однобуквенные
синонимы для fuses.
При наличии "пересекающихся" name=val выдается сообщение об ошибке.
При наличии нескольких ключей -f действие имеет _только_последний_.
Перечень fusename для конкретного чипа с диапазоном value и комментарием
можно получить при помощи
avreal +chipname -?
Для сокращения строки возможно задание полного байта fuses при помощи
специальных имен bytename, представляющие собой названия байтов
по документации с лидирующим подчерком:
_low,_high,_ext,_lock
Нереализованные в данном байте биты рекомендуется устанавливать в '1'.
Имя _lock относится к байту lock-битов и BLB, однако на состояние
lock-битов НЕ ВЛИЯЕТ. Для блокировки кристалла по прежнему надо
использовать ключ -l.
Допускается комбинация отдельных fuse и байтов, однако они при этом
не должны пересекаться, т.е. каждый байт fuses должен быть задан
либо только через специальное имя, либо только через имена отдельных
fuse. Например,
допустимо: -f_low=C3,_high=F4,blb2=1
не допустимо: -f_lock=F7,blb2=1
Если работа с fuses по SPI поддерживается, то их состояние сообщается
при любой операции с чипом, задание ключа -F необязательно.
В случае наличия -F<fuselist> при -V производится верификация fuses.
Для записи fuses _необходимо_ указать ключ -w.
Неупомянутые fuse остаются неизменными (кроме BLB для mega161, mega163,
так как они могут быть стерты по -E).
AVReAl обеспечивает также расширенную поддержку osccal (см. ниже)
Группа BLB относится скорее к lock-битам, записать 1 поверх уже
запрограммированной в 0 fuse невозможно. Если запрошена
такая операция и чип не стирался, то программа завершает работу
с соответствующим предупреждением.
Для tiny12, tiny15 поддерживается программирование SPIEN
и RSTDSBL, будьте осторожны, SPIEN по умолчанию запрограмировано,
ключ -fspien=1 (-fspien=off) _сотрет_ SPIEN и запретит дальнейшее
низковольтное программирование. Запрет произойдет и при
_программировании_ RSTDSBL (-frstdsbl=0 или -frstdsbl=off).
-f<fuselist> -- список fuses для тех чипов, в которых они шьются по ISP.
<fuselist> выглядит как fusename=value,fusename=value,bytename=value...
value - ШЕСТНАДЦАТЕРИЧНОЕ значение без префиксов и суффиксов.
Для однобитовых fuse добавлены значения ON и OFF (прошить и стереть,
0 и 1 соответственно).
ВНИМАНИЕ! Начиная с версии 1.23 НЕ ПОДДЕРЖИВАЮТСЯ однобуквенные
синонимы для fuses.
При наличии "пересекающихся" name=val выдается сообщение об ошибке.
При наличии нескольких ключей -f действие имеет _только_последний_.
Перечень fusename для конкретного чипа с диапазоном value и комментарием
можно получить при помощи
avreal +chipname -?
Для сокращения строки возможно задание полного байта fuses при помощи
специальных имен bytename, представляющие собой названия байтов
по документации с лидирующим подчерком:
_low,_high,_ext,_lock
Нереализованные в данном байте биты рекомендуется устанавливать в '1'.
Имя _lock относится к байту lock-битов и BLB, однако на состояние
lock-битов НЕ ВЛИЯЕТ. Для блокировки кристалла по прежнему надо
использовать ключ -l.
Допускается комбинация отдельных fuse и байтов, однако они при этом
не должны пересекаться, т.е. каждый байт fuses должен быть задан
либо только через специальное имя, либо только через имена отдельных
fuse. Например,
допустимо: -f_low=C3,_high=F4,blb2=1
не допустимо: -f_lock=F7,blb2=1
Если работа с fuses по SPI поддерживается, то их состояние сообщается
при любой операции с чипом, задание ключа -F необязательно.
В случае наличия -F<fuselist> при -V производится верификация fuses.
Для записи fuses _необходимо_ указать ключ -w.
Неупомянутые fuse остаются неизменными (кроме BLB для mega161, mega163,
так как они могут быть стерты по -E).
AVReAl обеспечивает также расширенную поддержку osccal (см. ниже)
Группа BLB относится скорее к lock-битам, записать 1 поверх уже
запрограммированной в 0 fuse невозможно. Если запрошена
такая операция и чип не стирался, то программа завершает работу
с соответствующим предупреждением.
Для tiny12, tiny15 поддерживается программирование SPIEN
и RSTDSBL, будьте осторожны, SPIEN по умолчанию запрограмировано,
ключ -fspien=1 (-fspien=off) _сотрет_ SPIEN и запретит дальнейшее
низковольтное программирование. Запрет произойдет и при
_программировании_ RSTDSBL (-frstdsbl=0 или -frstdsbl=off).
Кто не делает ошибок тот обычно вообще ничего не делает.
Пишу программатор и совсем запарился с этими фьюзами.
Точнее с их состояниями. Вот к примеру прочитал я High Fuse Bits как 0х4A. Теперь как это понимать? Понятно, что смотри на биты. Но там вечная путаница с 0 это 1 и 1 это 0. Так вот в этой самой 0x4A бит 1 значит, что этот фьюз выставлен или нет?
Точнее с их состояниями. Вот к примеру прочитал я High Fuse Bits как 0х4A. Теперь как это понимать? Понятно, что смотри на биты. Но там вечная путаница с 0 это 1 и 1 это 0. Так вот в этой самой 0x4A бит 1 значит, что этот фьюз выставлен или нет?
Привет, Нано! Это ведь ты на електроникс чего-то там форуме есть? (Голубой такой форум) привет от Alexey Belyaev'a! Это я! Я думаю ты уже догодался. Да о чём это я? Отвлёкся.
Ну вот к примеру имеем

FH = 0b1101 1001
Из проца прочитается именно это значение? Что будет означчать, что SPIEN разрешён и размер загрузчика как 0, но ресет вектор на 0х00. Так?
Ну вот к примеру имеем
FH = 0b1101 1001
Из проца прочитается именно это значение? Что будет означчать, что SPIEN разрешён и размер загрузчика как 0, но ресет вектор на 0х00. Так?
Так оно и оказалось! Спасибо за хелп. Продолжаем разрабатывать программатор.
Конторллер ATmega16.
Вот такая проблема: по дурости забыл устновить фьюзы CKSEL0..3 (они остились на 0000, я так понимаю это установка "внешняя частота"), после этого МК не желает прошиваться второй раз
как выйти из положения?
P.S. пробовал подключать разные кварцы, но это не спасает.
Вот такая проблема: по дурости забыл устновить фьюзы CKSEL0..3 (они остились на 0000, я так понимаю это установка "внешняя частота"), после этого МК не желает прошиваться второй раз
P.S. пробовал подключать разные кварцы, но это не спасает.
"Всё новое - хорошо забытое старое" - для творцов без творческий мысли.
- Сообщения: 568
- Зарегистрирован: Ср янв 10, 2007 19:15:51


