Реклама ⓘ
Главная » Микроконтроллеры
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

SinaProg + ATmega328P исправляем прошивку фьюзов

Статья не очень интересная, но может кто-то столкнётся с такой проблемой.

В моём арсенале «приборчиков радиолюбителя» имеется программатор UsbTiny. В качестве программы для прошивки микроконтроллеров (МК) я использую SinaProg.

SinaProg – это графическая оболочка для программы AVRDude – очень мощной, но консольной программы для прошивки МК. И чтобы не мучиться с прописыванием параметров как во времена доброго MS-DOSа, придумали такую программку-оболочку.

До недавнего времени меня всё устраивало. Но вот приехала партия микроконтроллеров ATmega328P (на них работают Arduino Uno), и тут началось… В списке поддерживаемых программой микроконтроллеров ATmega328P имеется, прошивка шьется, читается, всё бы ничего, но не работает функция установки фьюзов. При входе в «калькулятор фьюзов», программа не даёт изменять значения (см.скриншот):

Непорядок. Я решил разобраться в чём дело. Первым делом я поискал новую версию SinaProg. Нашел какую то другую версию, обновил, но всё осталось по прежнему. Сайт разработчиков, как выяснилось, уже давно не работает. Ну что ж, придётся разбираться самому. Заходим в папку с программой. Видим там файлы:

В файле «Device.txt» содержится список поддерживаемых МК. Можно добавлять новые МК если их нет в списке. ATmega328P в этом списке есть (левый столбец). Также в файле содержатся сигнатуры (типа уникального ID номера) всех МК (в правом столбце). Смотрим скриншот, поехали дальше.

Проблема в том, что не меняются фьюзы, обратим внимание на файлы Calc_xx.cal. Они нам и нужны, и отвечают за калькулятор фьюзов. Очевидно, что где-то в них что-то не дописано, либо написано неверно. Открываем файлы при помощи «Блокнота», так как внутри они содержат обычный текст. Содержание у всех файлов похожее, и я не буду рассматривать каждый из них. Коротко расскажу какой файл за что отвечает:

-«Calc_EF.cal» – отвечает за фьюзы группы «Extended Fuses», или расширенные настройки
-«Calc_HF.cal» – отвечает за фьюзы группы «High Fuses»
-«Calc_LB.cal» – отвечает за фьюзы группы «Lock Bits», проще говоря – блокировки, защита.
-«Calc_LF.cal» – отвечает за фьюзы группы «Low Fuses»

Для примера откроем в «блокноте» файл «Calc_LB.cal». Вот что мы увидим:

Как мы видим, сразу после ATmega3250 идёт ATmega329, а нашей атмеги328 здесь нету. А это значит, что её нужно добавить. Как нам это сделать? В принципе не сложно. Для этого взглянем на даташит ATmega328P:

Как видно из даташита, МК ATmega328P совместим по своему устройству с МК ATmega48PA/88PA/168PA, отличие лишь в количестве памяти программ, памяти данных, и размере загрузчика. Поэтому попробуем найти например ATmega168 в нашем файле:

ATmega168 в файле имеется, выделяем и копируем все строки, относящиеся к ATmega168. Затем добавляем пустую строку между ATmega3250 и ATmega329, и вставляем туда то, что мы скопировали. Во всех строках заменяем ATmega168 на ATmega328P. Должно получиться что-то вроде этого:

Закрываем файл, сохранив внесённые изменения. Такую же операцию проделываем и над файлами «Calc_HF.cal» и «Calc_LF.cal».Остаётся изменить содержимое файла «Calc_EF.cal», всё делается по тому же принципу, но с небольшой поправкой. В этом файле прописаны фьюзы, отвечающие в основном за размер загрузчика. А так, как ATmega48PA/88PA/168PA/328P отличаются обьёмом памяти на борту, то и размеры загрузчиков у них разные. Поэтому внесём поправки. ATmega168 имеет 16кб памяти программ, а ATmega328P соответственно 32 кб памяти. И размер загрузчика у них отличается ровно в 2 раза. Поэтому открываем файл, находим ATmega168, копируем все строки, вставляем, меняем название МК на ATmega328P, и смотрим на скриншот:

Нужно размеры загрузчиков увеличить в 2 раза, так как размер памяти стал больше в 2 раза. Увеличили, закрываем и сохраняем файл. Теперь запускаем SinaProg, заходим в калькулятор фьюзов, и видим:

Кнопочки стали активны, и фьюзы можно изменять. Таким же образом можно добавлять и другие МК, а значения необязательно копировать от другого МК. Если хорошенько почитать даташит, то все эти значения там имеются, и можно просто написать строки самому, по аналогии с любым другим МК.

Так как SinaProg работает на основе AVRDUDE, то напоследок скачаем и обновим AVRDUDE в папке с SinaProg. Последнюю версию AVRDUDE можно взять с официального сайта, либо скачать внизу страницы, я приложил последнюю версию на момент написания статьи. Из архива нам потребуется собственно, сама программа «AVRDUDE.exe» и конфигурационный файл «avrdude.conf». Так было:

Так стало после замены старых файлов AVRDUDE на новые:

В консоль теперь стали выводиться байты фьюзов.

В файлах прилагаю архив с моей «доделанной» версией SinaProg (с поддержкой фьюзов ATmega328P и обновлённым AVRDUDE).

Прикрепленные файлы:

Теги:

Опубликована: 24.10.2013 0 1
Я собрал 0 1
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 1 чел.

Комментарии (14) | Я собрал (0) | Подписаться

0
Алексей #
Спасибо за статью! Столкнулся с подобной проблемой для Mega48PA, ко всему его сигнатура отличается на одну букву от меги 48, что есть в конфигах. Благодаря Вам проблема решена
Ответить
0
MikruhaMaklay #
Спасибо, у меня как раз 328P, подцепил кварц, фьюзы прошились на ура!
Ответить
0
Илья #
Архив с SinaProg кривой! Распаковывается, но при запуске слетает с ошибкой.
Ответить
0

[Автор]
Zlodey #
только что проверил- всё нормально. Убедитесь, что:
- скачали все 3 части и они лежат по одинаковому пути
- архиватор поддерживает разбитые на части архивы
- открываете часть 01
Также для винды7 необходим пакет lvrte и запуск в режиме совместимости с XP
Ответить
0
Руслан #
Статья отличная, мне помогла, и все заработало. А подскажи пожалуйста, как добавить самому в сина прог mega16u2, с ней такая же история как и с мега 328, сина прог пишет что считала его, но не определила что это мега16U2, посмотрел в файл девайс.тхт, там только мега16, а они разные.
Ответить
0
Gauss #
А мне AS больше всего нравится и все есть, а с sinaprog начинать удобно
Ответить
0
Sandro #
Откройте даташит и посмотрите внимательно. Выясняем, что EXT FUSE для 168 и 328 разные! А народ, кто повнимательней, сидит и чешет репу.
Прикрепленный файл: fuse.jpg
Ответить
0
Александр #
А как тогда отнестись к тем комментариям, согласно которым удалось удачно прошить фьюзы для 328р?
Ответить
0
Nik #
Видимо удалось случайно.
Действительно, в файлах фузы для 328 Brown-out detector ВРУТ
Ответить
0
Виталий #
Прочитал коментарий Sandro 25.09.2015 10:59 #
Откройте даташит и посмотрите внимательно. Выясняем, что EXT FUSE для 168 и 328 разные! А народ, кто повнимательней, сидит и чешет репу. Я - же упал духом, Честно сказать сам давно хотел освоить ATmega328P, но видно не судьба. Ребята а кто в железе проверял данную версию SinaProg напишите в личку или в коментах заранее спасибо!
Ответить
0
Nazar #
Как изменить "Calibratio"?
Ответить
0
1937 #
В файле "Calc_EF.cal" должно быть:
ATmega328P 0x07 0x07 Brown-out detection disabled; [BODLEVEL=111]
ATmega328P 0x07 0x06 Brown-out detection level at VCC=1.8 V; [BODLEVEL=110]
ATmega328P 0x07 0x05 Brown-out detection level at VCC=2.7 V; [BODLEVEL=101]
ATmega328P 0x07 0x04 Brown-out detection level at VCC=4.3 V; [BODLEVEL=100]

В файле "Calc_HF.cal" должно быть:
ATmega328P 0x80 0x00 Reset Disabled (Enable PC6 as i/o pin); [RSTDISBL=0]
ATmega328P 0x40 0x00 Debug Wire enable; [DWEN=0]
ATmega328P 0x20 0x00 Serial program downloading (SPI) enabled; [SPIEN=0]
ATmega328P 0x10 0x00 Watch-dog Timer always on; [WDTON=0]
ATmega328P 0x08 0x00 Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0]
ATmega328P 0x06 0x06 Boot Flash section size=256 words Boot start address=$3F00; [BOOTSZ=11]
ATmega328P 0x06 0x04 Boot Flash section size=512 words Boot start address=$3E00; [BOOTSZ=10]
ATmega328P 0x06 0x02 Boot Flash section size=1024 words Boot start address=$3C00; [BOOTSZ=01]
ATmega328P 0x06 0x00 Boot Flash section size=2048 words Boot start address=$3800; [BOOTSZ=00] ; default value
ATmega328P 0x01 0x00 Boot Reset vector Enabled (default address=$0000); [BOOTRST=0]
Ответить
0
Валерий #
Всё изменил в соответствии с рекомендациями,учитывая и 1937.После прошивки включается экран-отображения"0." Модель ATMega 328P No strip. Прошивку ставил 748.
Повторные прошивки с разными вариантами не дали результата. Что-то с загрузчиком.
Ответить
0
Юрий #
Не удаётся запустить SinaProg + ATmega328P
Даже с совместимостью с WIN.XP.
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

AVR-программатор USB ASP
AVR-программатор USB ASP
Паяльник с регулировкой температуры Набор для сборки - УНЧ 2х60 Вт на TDA7294
вверх