Ошибка верификации возможно установлены lock биты avrdude

Форум РадиоКот • Просмотр темы — Ошибка при записи прошивки

Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт сен 22, 2023 17:31:34

Сообщения без ответов | Активные темы

ПРЯМО СЕЙЧАС:

Автор Сообщение

nullknightnull

Не в сети

Заголовок сообщения: Ошибка при записи прошивки

СообщениеДобавлено: Ср фев 06, 2019 22:05:24 

Родился

Зарегистрирован: Чт янв 31, 2019 12:50:07
Сообщений: 8

Рейтинг сообщения: 0

Микроконтроллер atmega 8, программа avr dude. При нажатии кнопки «Программирование» выскакивает ошибка «ошибка верификации. Возможно установлены lock биты», но микроконтроллер прошивается! И до этого во фьюзах всё было так же, нечего не менял. Всё работает конечно, но раздражает выскакивающая ошибка. Что это может быть?

Вернуться наверх
 

ПрофильПрофиль

 

Реклама

webtime

Не в сети

Заголовок сообщения: Re: Ошибка при записи прошивки

СообщениеДобавлено: Ср фев 06, 2019 23:27:09 

Опытный кот
Аватар пользователя

Карма: 9

Рейтинг сообщений: 60

Зарегистрирован: Пт авг 31, 2018 21:53:52
Сообщений: 844
Откуда: ул. Островидова, общага напротив

Рейтинг сообщения: 0

забей


_________________
Варкалось. Хливкие шорьки
Пырялись по нове,
И хрюкотали зелюки,
Как мюмзики в мове.

:)))

Вернуться наверх
Реклама

radteh

Не в сети

Заголовок сообщения: Re: Ошибка при записи прошивки

СообщениеДобавлено: Чт фев 07, 2019 02:07:45 

Друг Кота
Аватар пользователя

Карма: 23

Рейтинг сообщений: 283

Зарегистрирован: Пт мар 09, 2007 15:01:52
Сообщений: 3041
Откуда: Биробиджан

Рейтинг сообщения: 0

Медали: 1

Получил миской по аватаре (1)

Ошибка верификации означает что не прошло считывание. При прошивке фьюзы сразу выставляешь? Как вариант что после прошивки контроллер переключился на внешнее тактирование и соответственно не проходит считываение. Подкинь кварц или генератор на вход, после чего повторно считай.

PS У avrdude нет кнопки программирования, это консольная программа. Какой оболочкой пользуешься?

Вернуться наверх

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Модераторы: KopylovSergey, dmibr

FreshMan

Сообщения: 7
Зарегистрирован: 28 мар 2014, 23:46

Аватара пользователя

admin

Администратор
Сообщения: 1099
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: AVRDUDE_PROG

Сообщение

admin » 23 дек 2014, 20:14

FreshMan писал(а):
хочется так сказать вникнуть и проняться :-):

В последней версии avrdude_prog 3.3 используется avrdude 6.1, которая некорректно работает с AVR isp mk II. Заменяем avrdude 6.1 на более раннюю версию avrdude 5.11 и вуаля :-):

зы. Возможно в архиве заменю 6.1 на 5.11, чтобы версия 5.11 была по умолчанию.


FreshMan

Сообщения: 7
Зарегистрирован: 28 мар 2014, 23:46

Re: AVRDUDE_PROG

Сообщение

FreshMan » 24 дек 2014, 01:11

так а что там такого есть в версии 6.1 что мешает работе оного программатора ?
можете донести саму суть ?


Аватара пользователя

admin

Администратор
Сообщения: 1099
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: AVRDUDE_PROG

Сообщение

admin » 24 дек 2014, 22:50

В такие подробности не вникал


Baron76

Сообщения: 2
Зарегистрирован: 28 дек 2014, 20:47

Re: AVRDUDE_PROG

Сообщение

Baron76 » 28 дек 2014, 21:01

Всем привет. Большое спасибо разработчику графического интерфейса AVRDUDE_PROG . Пользуюсь недавно так как на глаза мне он не попадался. Программатор AvrUsb500 by Petka. Всё это в связке работает очень хорошо и стабильно. Мне очень нравится. Но не хватает одной приятной мелочи. Невозможно вбить Fuse циферно_буквенным индексом. Тоесть написать в клеточке Е1 и галочки стали как надо. Не планируется ли такая доработка в следующей версии?


Аватара пользователя

admin

Администратор
Сообщения: 1099
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: AVRDUDE_PROG

Сообщение

admin » 29 дек 2014, 19:54

Много обращений с таким предложением, но проблема в том, что начинающий будет иметь доступ к биту SPIEN (недоступен по умолчанию), который отвечает за внутрисхемное программирование.
Можно перебором галочек установить необходимое значение фьюзов. :-):

З.ы. установка доступа к битам настраивается в файле atmel.ini в корне программы. Описание работы с файлом на сайте.


Baron76

Сообщения: 2
Зарегистрирован: 28 дек 2014, 20:47

Re: AVRDUDE_PROG

Сообщение

Baron76 » 29 дек 2014, 23:07

Спасибо за ответ,попробую разобраться.


Plohish

Сообщения: 2
Зарегистрирован: 05 фев 2015, 12:46

Re: AVRDUDE_PROG

Сообщение

Plohish » 05 фев 2015, 13:13

Добрый день уважаемые господа, спасибо вам за ваша программу.
Обнаружил небольшую проблемку.
система Windows 7 x64
Как видно, значения фьюза частично не влазит в отведённое ему окошко и DD легко путается с DC (с чем по сути два дня трахался :) )

заранее спасибо за помощь

Вложения
Untitled-1.jpg
Untitled-1.jpg (173.24 КБ) 85977 просмотров


Аватара пользователя

admin

Администратор
Сообщения: 1099
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: AVRDUDE_PROG

Сообщение

admin » 16 фев 2015, 20:19

Тут много чего произошло — полетел винт с исходниками, переехал на другого хостера, кому то не даёт покоя форум (частенько приходиться восстанавливать).
Ваша проблема была решена в данном посте, но ссылка на скачку битая, написал в личку BAU, возможно скинет. Как скинет, восстановлю.

З.Ы. Попробуйте самостоятельно связаться с BAU.


Plohish

Сообщения: 2
Зарегистрирован: 05 фев 2015, 12:46

Re: AVRDUDE_PROG

Сообщение

Plohish » 16 фев 2015, 21:50

ок, спасибо… только вот он последний раз был на форуме в мае 14 года…
а я то думаю куда ты пропал :)


EmSerg

Сообщения: 5
Зарегистрирован: 17 фев 2015, 15:54
Откуда: Арзамас

Re: AVRDUDE_PROG

Сообщение

EmSerg » 17 фев 2015, 17:44

Здравствуйте, подключился через LPT.
В Arduino Leonardo менял загрузчик, всё получилось. В Arduino Pro mini включил сторожевой таймер, в загрузчике глюк, решил прошить — итог: не шьёт. В программе глюк.
Всё …ОК! и программируется, и проверяется, вот только кабель LPT не подключен к ПК.
Тоже самое и с Fuses (кабель не подключен, там все биты сброшены), выставляем биты вручную и верификация = …ОК!

…» Cформированная командная строка:
avrdude.exe -p m328p -c stk200 -P lpt1 -U lfuse:w:0:m -U hfuse:w:0:m -U efuse:w:0:m -U lock:w:0:m
avrdude.exe: AVR device not responding
avrdude.exe: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.»» …
Проверяйте схему? Подключаю через разъёмы, соединения все присутствуют 100% правильно. ((прочитал форум, это ответ на такой же ранее заданный вопрос.) до включения сторожевого таймера в прошивке, работало всё нормально и считывалось). Внешний кварц работает, кристалл исправен (подключенный светодиод LED13 генерит 10Гц когда не подключен SCK). Подключаю LPT, светодиод перестаёт моргать, калибровочная ячейка генератора считывается 0. Возможно это проблема для Atmega328P. Разъём переключаю на Atmega32u4 там всё считывает и программирует.
Что делать? :wo_ol:


Аватара пользователя

admin

Администратор
Сообщения: 1099
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: AVRDUDE_PROG

Сообщение

admin » 18 фев 2015, 00:42

Давайте вместе покапаем :-):

EmSerg писал(а):Здравствуйте, подключился через LPT.
Всё …ОК! и программируется, и проверяется, вот только кабель LPT не подключен к ПК.
Тоже самое и с Fuses (кабель не подключен, там все биты сброшены), выставляем биты вручную и верификация = …ОК!

Есть такое дело, просто первая оболочка была сделана в 2007 году, соответственно и заточена была под «старую» версию самой avrdude и обрабатывала «старые» сообщения, а современные пропускает, выводя что всё «ОК».
Мог бы всё поправить, но на данный момент вот такая ситуация, как восстановлю исправлю все ошибки.

EmSerg писал(а):
…» Cформированная командная строка:
avrdude.exe -p m328p -c stk200 -P lpt1 -U lfuse:w:0:m -U hfuse:w:0:m -U efuse:w:0:m -U lock:w:0:m
avrdude.exe: AVR device not responding
avrdude.exe: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.»» …

Пока два варианта:
1. первый вариант
2. добавить ключ -F аналогично примеру
Просьба написать какой вариант сработал.

EmSerg писал(а):
((прочитал форум, это ответ на такой же ранее заданный вопрос.)

Если бы спрашивающий описал проблему так же как и Вы, то ответил бы подробней. А вопрос — «Подключил, не работает, вот такое сообщение…, что делать?», соответственно и отвечаю исходя из одного «сообщения».
Причин данного «сообщения» может быть ВАГОН — мк не запитан, кварц не работает, фьюзами установили работу на кварц , а его нет, нет шунтирующих конденсаторов, кривое питание, нет «земли», микротрещины, нет физической связи программатора с мк, мк залочен (LOCK фьюзы), фьюзы SPIEN, RST…?, не соответствует скорость программирования (SCK), к портам программирования МК подключена дополнительная схема вне программатора и т.д. и т.п. А я не ясновидящий :nez-nayu: :-):


EmSerg

Сообщения: 5
Зарегистрирован: 17 фев 2015, 15:54
Откуда: Арзамас

Re: AVRDUDE_PROG

Сообщение

EmSerg » 20 фев 2015, 19:10

ATmega328P подключен к LPT. Схему подключения нарыл путём перекрёстных ссылок из программы. (подключено напрямую без резисторов, кроме конденсатора 0,1мкф по питанию 7и8 ноги меги) Нумерация выводов следующая:
LPT: 328P
———————-
6 SCK 19
7 MOSI 17
9 Reset 1
10 MISO 18
25 GND 8, 22
USB +5v 7, 20

Кварц 16MHz 9 и 10
————————

Предлагаемые примеры не подходят.
Пытаюсь повторить USBasp простой программатор http://matrixstorm.com/avr/tinyusbboard/#usbbootloader» target=»_blank
после заливки с http://www.fischl.de/usbasp/» target=»_blank сначала вылезала ошибка верификации, а теперь ничего не могу записать, пишет: возможно установлены lock биты.


Аватара пользователя

admin

Администратор
Сообщения: 1099
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: AVRDUDE_PROG

Сообщение

admin » 21 фев 2015, 19:49

admin писал(а): Как скинет, восстановлю.

Скинули, исправил в предыдущем посте, на всякий прикреплю в этом, пробуйте. В архиве только EXE файл, разархивируйте в корень программы с заменой. Все Ваши настройки останутся.

Вложения
AVRDUDEPROG.zip
(314.65 КБ) 1786 скачиваний


Аватара пользователя

admin

Администратор
Сообщения: 1099
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: AVRDUDE_PROG

Сообщение

admin » 21 фев 2015, 19:52

EmSerg писал(а):
Предлагаемые примеры не подходят.

Какие ошибки выдаёт в обоих случаях?
Возможны ошибки в файлах *.ini и *.conf при работе именно с контроллером ATmega328P



EmSerg

Сообщения: 5
Зарегистрирован: 17 фев 2015, 15:54
Откуда: Арзамас

Re: AVRDUDE_PROG

Сообщение

EmSerg » 24 фев 2015, 11:35

[STK200LPT]
progisp=stk200 -B 200
portprog=lpt1
portenabled=0

Cформированная командная строка:
avrdude.exe -p m328p -c stk200 -P lpt1 -U flash:r:»D:\Programs\avrdudeprog\ATMEGA328P\200.hex»:i
avrdude.exe: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude.exe: Device signature = 0x1e950f
avrdude.exe: reading flash memory:
Reading | ################################################## | 100% 16.28s
avrdude.exe: writing output file «D:\Programs\avrdudeprog\ATMEGA328P\200.hex»
avrdude.exe: safemode: Fuses OK (E:07, H:D9, L:62)
________________

[STK200LPT]
progisp=stk200 -B 2
portprog=lpt1
portenabled=0

Cформированная командная строка:
avrdude.exe -p m328p -c stk200 -P lpt1 -U flash:r:»D:\Programs\avrdudeprog\ATMEGA328P\2.hex»:i
avrdude.exe: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude.exe: Device signature = 0x1e950f
avrdude.exe: reading flash memory:
Reading | ################################################## | 100% 16.11s
avrdude.exe: writing output file «D:\Programs\avrdudeprog\ATMEGA328P\2.hex»
avrdude.exe: safemode: Fuses OK (E:07, H:D9, L:62)

_____________________
Ключ не работает, т.к. скорость НЕ ИЗМЕНЯЕТСЯ.
Запись идёт быстрее, чем чтение и совершенно другие данные.

Cформированная командная строка:
avrdude.exe -p m328p -c stk200 -P lpt1 -U flash:w:»D:\Programs\avrdudeprog\firmware\usbasp.atmega88.2011-05-28.hex»:a
avrdude.exe: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude.exe: Device signature = 0x1e950f
avrdude.exe: NOTE: «flash» memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude.exe: erasing chip
avrdude.exe: reading input file «D:\Programs\avrdudeprog\firmware\usbasp.atmega88.2011-05-28.hex»
avrdude.exe: input file D:\Programs\avrdudeprog\firmware\usbasp.atmega88.2011-05-28.hex auto detected as Intel Hex
avrdude.exe: writing flash (4716 bytes):
Writing | ################################################## | 100% 2.64s
avrdude.exe: 4716 bytes of flash written
avrdude.exe: verifying flash memory against D:\Programs\avrdudeprog\firmware\usbasp.atmega88.2011-05-28.hex:
avrdude.exe: load data flash data from input file D:\Programs\avrdudeprog\firmware\usbasp.atmega88.2011-05-28.hex:
avrdude.exe: input file D:\Programs\avrdudeprog\firmware\usbasp.atmega88.2011-05-28.hex auto detected as Intel Hex
avrdude.exe: input file D:\Programs\avrdudeprog\firmware\usbasp.atmega88.2011-05-28.hex contains 4716 bytes
avrdude.exe: reading on-chip flash data:
Reading | ################################################## | 100% 2.30s
avrdude.exe: verifying …
avrdude.exe: 4716 bytes of flash verified
avrdude.exe: safemode: Fuses OK (E:07, H:D9, L:62)

Вложения
files_error.zip
(9.12 КБ) 1744 скачивания


Аватара пользователя

admin

Администратор
Сообщения: 1099
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: AVRDUDE_PROG

Сообщение

admin » 24 фев 2015, 15:58

EmSerg писал(а):
avrdude.exe: verifying …
avrdude.exe: 4716 bytes of flash verified
avrdude.exe: safemode: Fuses OK (E:07, H:D9, L:62)

Вроде всё ок, в чём проблема то? :-):


EmSerg

Сообщения: 5
Зарегистрирован: 17 фев 2015, 15:54
Откуда: Арзамас

Re: AVRDUDE_PROG

Сообщение

EmSerg » 24 фев 2015, 16:27

а ничего, что я отправляю файл в 13кб, а считываю 4кб? и совсем не то?


Аватара пользователя

admin

Администратор
Сообщения: 1099
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: AVRDUDE_PROG

Сообщение

admin » 26 фев 2015, 08:26

А девайс как работает, в соответствии с прошивкой или нет?


EmSerg

Сообщения: 5
Зарегистрирован: 17 фев 2015, 15:54
Откуда: Арзамас

Re: AVRDUDE_PROG

Сообщение

EmSerg » 26 фев 2015, 16:18

Не работает.


Аватара пользователя

admin

Администратор
Сообщения: 1099
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: AVRDUDE_PROG

Сообщение

admin » 01 мар 2015, 22:27

Командная строка (avrdude.exe -p m328p -c stk200 -P lpt1 -U flash:w:»D:\Programs\avrdudeprog\firmware\usbasp.atmega88.2011-05-28.hex»:a) программой сформирована верно. Попробуйте разобраться c файлом «avrdude.conf», где прописаны характеристики программирования для данного МК.


d00die

Сообщения: 3
Зарегистрирован: 08 ноя 2014, 23:48

Re: AVRDUDE_PROG

Сообщение

d00die » 31 май 2015, 15:32

добра всем!!!
программатор USBasp, AVRdude prog 3.3.
вкратце- железо исправное, без проблем работает на других компах, и с полгода назад работало и на этом.
сейчас после включения программатора в USB разьем без проблем и корректно отрабатывает любая команда чтения или записи, но, только один раз.
повторне обращение к программатору возможно только после вынуть\вставить заново программатор из USB разьема.
при повторном выполнении вот что-(чтение еепром к примеру)

avrdude.exe: set SCK frequency to 93750 Hz
avrdude.exe: error: programm enable: target doesn’t answer. 1
avrdude.exe: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.

система XP sp2.
переустановка драйверов не помогла.
если у вас есть идеи, подскажите, куда копать?
и, попутно, «or use -F » в какой строке прописать? и, как она должна выглядеть?

заранее благодарю за все идеи.



gosha006

Сообщения: 8
Зарегистрирован: 18 сен 2015, 00:38

Re: AVRDUDE_PROG

Сообщение

gosha006 » 18 сен 2015, 01:11

Подскажите, в чем может быть проблема? Прошил чистый ATmega168PA, заработал. Найдя косяк решил стереть и перезалить, но уже не получается. Пляшут сигнатуры сами по себе. Скрины прилагаю.

Вложения
2.jpg
2.jpg (27.51 КБ) 83390 просмотров
1.jpg
1.jpg (41.79 КБ) 83390 просмотров
Безымянный.jpg
Безымянный.jpg (48.08 КБ) 83390 просмотров


gosha006

Сообщения: 8
Зарегистрирован: 18 сен 2015, 00:38

Re: AVRDUDE_PROG

Сообщение

gosha006 » 18 сен 2015, 01:12

Все разные, но иногда повторяются:

Вложения
3.jpg
3.jpg (29.1 КБ) 83390 просмотров


Аватара пользователя

admin

Администратор
Сообщения: 1099
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: AVRDUDE_PROG

Сообщение

admin » 18 сен 2015, 09:57

тут смотрели :-):
Смотрите схему, если раньше работало, то должно быть всё ок


gosha006

Сообщения: 8
Зарегистрирован: 18 сен 2015, 00:38

Re: AVRDUDE_PROG

Сообщение

gosha006 » 18 сен 2015, 14:35

Я частоту контроллеру зашил пониженную 16к, теперь нестыковка с программатором. Как лечить?


Аватара пользователя

admin

Администратор
Сообщения: 1099
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: AVRDUDE_PROG

Сообщение

admin » 18 сен 2015, 16:27


Georg

Сообщения: 1
Зарегистрирован: 18 окт 2015, 23:31

Re: AVRDUDE_PROG

Сообщение

Georg » 18 окт 2015, 23:38

Добрый вечер ! Возникла необходимость перепрошить достаточно большое количество контроллеров
ATXmega128A1 (AU). Есть ли у вас возможность добавить этот тип в перечень поддерживаемых ?


Вернуться в «YOURDEVICE»


Перейти

  • ЭЛЕКТРОНИКА
  • ↳   YOURDEVICE
  • ↳   Разработка электроники, автоматизированных систем управления на конструкторе «YourDevice KIT»
  • ↳   В помощь начинающему разработчику
  • ↳   Авто
  • ↳   AVR
  • ↳   STM
  • ↳   NXP
  • ↳   Разработчику
  • ПРОМЫШЛЕННАЯ АВТОМАТИКА
  • ↳   Преобразователи частоты, устройства плавного пуска и т.п.
  • ↳   Измерители, регуляторы, датчики
  • ↳   Пусконаладочные работы, первый запуск, пуски и пр.
  • ↳   Промышленные сети и интерфейсы
  • ↳   Мои записки
  • ПРОЧЕЕ
  • ↳   SWIFT XCODE
  • ↳   Python
  • ↳   Linux Mint
  • ↳   Raspberry Pi, Banana Pi, Orange Pi, Cubieboard и пр.
  • ↳   Всё что не вошло в другие разделы
  • ↳   Сервисные центры и услуги Первоуральска
  • ↳   Курилка
  • ↳   Юмор
  • ↳   Отзывы, вопросы, предложения по работе сайта и форума.
  • ↳   Всякие нужные полезности. Лайфхаки).

ArduinoCore-avr Version: 1.8.3

It’s not possible to update the fuse/lock bits with the included boards.txt and recent avrdude versions.

avrdude used to mask unused bits for some microcontrollers, but this was changed some time ago.

As a result, trying to write fuse bits into an Arduino Uno leads to the following error:

$ /usr/bin/avrdude -v -patmega328p -cusbtiny -e -Ulock:w:0x3F:m
avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
         0xff != 0x3f
avrdude: verification error; content mismatch

The two uppermost lock bits in the ATmega328P are unused and will always read as logic 1.

As a result, the following modification must be made to boards.txt:

diff --git boards.txt boards.txt
index 2dca915..d2b8dc4 100644
--- boards.txt
+++ boards.txt
@@ -67,8 +67,8 @@ uno.bootloader.tool=avrdude
 uno.bootloader.low_fuses=0xFF
 uno.bootloader.high_fuses=0xDE
 uno.bootloader.extended_fuses=0xFD
-uno.bootloader.unlock_bits=0x3F
-uno.bootloader.lock_bits=0x0F
+uno.bootloader.unlock_bits=0xFF
+uno.bootloader.lock_bits=0xCF
 uno.bootloader.file=optiboot/optiboot_atmega328.hex
 
 uno.build.mcu=atmega328p

This will make avrdude expect a logic 1 and prevent verification failure.

Originally reported by Gregor Riepl [1]. Suspected relation to #61. Please address and/or advice.

Thanks a lot.

Купил новый микроконтроллер Arduino Mega2560.

При помощи Ardiuno IDE залил простенькую программу — мигание с интервалом в 1 секунду.

При помощи AVRDUDE считал Flash в файл m2560_blink_1.hex

При помощи Ardiuno IDE залил простенькую программу — мигание с интервалом в 3 секунды.

При помощи AVRDUDE считал Flash в файл m2560_blink_3.hex

Сверил получившиеся файлы — совершенно идентичные!

При помощи AVRDUDE решил залить файл m2560_blink_1.hex — выдал ошибку:

Cформированная командная строка:
avrdude.exe -p m2560 -c usbasp -P usb -U flash:w:»C:\Bin\Arduino\flash\m2560_blink_1.hex»:a

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.03s

avrdude.exe: Device signature = 0x1e9801
avrdude.exe: NOTE: «flash» memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude.exe: erasing chip
avrdude.exe: reading input file «C:\Bin\Arduino\flash\m2560_blink_1.hex»
avrdude.exe: input file C:\Bin\Arduino\flash\m2560_blink_1.hex auto detected as Intel Hex
avrdude.exe: writing flash (261406 bytes):

Writing | ################################################## | 100% 152.98s

avrdude.exe: 261406 bytes of flash written
avrdude.exe: verifying flash memory against C:\Bin\Arduino\flash\m2560_blink_1.hex:
avrdude.exe: load data flash data from input file C:\Bin\Arduino\flash\m2560_blink_1.hex:
avrdude.exe: input file C:\Bin\Arduino\flash\m2560_blink_1.hex auto detected as Intel Hex
avrdude.exe: input file C:\Bin\Arduino\flash\m2560_blink_1.hex contains 261406 bytes
avrdude.exe: reading on-chip flash data:

Reading | ################################################## | 100% 103.93s

avrdude.exe: verifying …
avrdude.exe: verification error, first mismatch at byte 0x1e000
0xff != 0x0d
avrdude.exe: verification error; content mismatch

avrdude.exe: safemode: Fuses OK (E:FD, H:D8, L:FF)

avrdude.exe done. Thank you.

——-

запустил из командной строки (добавил опцию -D):

avrdude.exe -p m2560 -c usbasp -D -P usb -U flash:w:»C:\Bin\Arduino\flash\m2560_blink_1.hex»:a

получил слегка другие значения ошибки:

avrdude.exe: verification error, first mismatch at byte 0x0000
0x06 != 0xff

причем все те же манипуляции провел для Arduino Nano — все ок, и файлы hex различаются

———

Сегодня еще странное было:

скачал hex flash-памяти с «глючной» Arduino Mega2560 с тестовой программой — размер 600 кБ

скачал hex flash-памяти с «оригинальной» Arduino Mega2560 с рабочей программой — размер 57 кБ

залил hex flash-памяти с «оригинальной» на «глючную» — ок

скачал hex flash-памяти с «глючной» Arduino Mega2560 с рабочей программой — размер 300 кБ

Что это может быть?

Модераторы: KopylovSergey, dmibr

FreshMan

Сообщения: 7
Зарегистрирован: 28 мар 2014, 23:46

Аватара пользователя

admin

Администратор
Сообщения: 1095
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: AVRDUDE_PROG

Сообщение

admin » 23 дек 2014, 20:14

FreshMan писал(а):
хочется так сказать вникнуть и проняться :-):

В последней версии avrdude_prog 3.3 используется avrdude 6.1, которая некорректно работает с AVR isp mk II. Заменяем avrdude 6.1 на более раннюю версию avrdude 5.11 и вуаля :-):

зы. Возможно в архиве заменю 6.1 на 5.11, чтобы версия 5.11 была по умолчанию.


FreshMan

Сообщения: 7
Зарегистрирован: 28 мар 2014, 23:46

Re: AVRDUDE_PROG

Сообщение

FreshMan » 24 дек 2014, 01:11

так а что там такого есть в версии 6.1 что мешает работе оного программатора ?
можете донести саму суть ?


Аватара пользователя

admin

Администратор
Сообщения: 1095
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: AVRDUDE_PROG

Сообщение

admin » 24 дек 2014, 22:50

В такие подробности не вникал


Baron76

Сообщения: 2
Зарегистрирован: 28 дек 2014, 20:47

Re: AVRDUDE_PROG

Сообщение

Baron76 » 28 дек 2014, 21:01

Всем привет. Большое спасибо разработчику графического интерфейса AVRDUDE_PROG . Пользуюсь недавно так как на глаза мне он не попадался. Программатор AvrUsb500 by Petka. Всё это в связке работает очень хорошо и стабильно. Мне очень нравится. Но не хватает одной приятной мелочи. Невозможно вбить Fuse циферно_буквенным индексом. Тоесть написать в клеточке Е1 и галочки стали как надо. Не планируется ли такая доработка в следующей версии?


Аватара пользователя

admin

Администратор
Сообщения: 1095
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: AVRDUDE_PROG

Сообщение

admin » 29 дек 2014, 19:54

Много обращений с таким предложением, но проблема в том, что начинающий будет иметь доступ к биту SPIEN (недоступен по умолчанию), который отвечает за внутрисхемное программирование.
Можно перебором галочек установить необходимое значение фьюзов. :-):

З.ы. установка доступа к битам настраивается в файле atmel.ini в корне программы. Описание работы с файлом на сайте.


Baron76

Сообщения: 2
Зарегистрирован: 28 дек 2014, 20:47

Re: AVRDUDE_PROG

Сообщение

Baron76 » 29 дек 2014, 23:07

Спасибо за ответ,попробую разобраться.


Plohish

Сообщения: 2
Зарегистрирован: 05 фев 2015, 12:46

Re: AVRDUDE_PROG

Сообщение

Plohish » 05 фев 2015, 13:13

Добрый день уважаемые господа, спасибо вам за ваша программу.
Обнаружил небольшую проблемку.
система Windows 7 x64
Как видно, значения фьюза частично не влазит в отведённое ему окошко и DD легко путается с DC (с чем по сути два дня трахался :) )

заранее спасибо за помощь

Вложения
Untitled-1.jpg
Untitled-1.jpg (173.24 КБ) 82315 просмотров

Аватара пользователя

admin

Администратор
Сообщения: 1095
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: AVRDUDE_PROG

Сообщение

admin » 16 фев 2015, 20:19

Тут много чего произошло — полетел винт с исходниками, переехал на другого хостера, кому то не даёт покоя форум (частенько приходиться восстанавливать).
Ваша проблема была решена в данном посте, но ссылка на скачку битая, написал в личку BAU, возможно скинет. Как скинет, восстановлю.

З.Ы. Попробуйте самостоятельно связаться с BAU.


Plohish

Сообщения: 2
Зарегистрирован: 05 фев 2015, 12:46

Re: AVRDUDE_PROG

Сообщение

Plohish » 16 фев 2015, 21:50

ок, спасибо… только вот он последний раз был на форуме в мае 14 года…
а я то думаю куда ты пропал :)


EmSerg

Сообщения: 5
Зарегистрирован: 17 фев 2015, 15:54
Откуда: Арзамас

Re: AVRDUDE_PROG

Сообщение

EmSerg » 17 фев 2015, 17:44

Здравствуйте, подключился через LPT.
В Arduino Leonardo менял загрузчик, всё получилось. В Arduino Pro mini включил сторожевой таймер, в загрузчике глюк, решил прошить — итог: не шьёт. В программе глюк.
Всё …ОК! и программируется, и проверяется, вот только кабель LPT не подключен к ПК.
Тоже самое и с Fuses (кабель не подключен, там все биты сброшены), выставляем биты вручную и верификация = …ОК!

…» Cформированная командная строка:
avrdude.exe -p m328p -c stk200 -P lpt1 -U lfuse:w:0:m -U hfuse:w:0:m -U efuse:w:0:m -U lock:w:0:m
avrdude.exe: AVR device not responding
avrdude.exe: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.»» …
Проверяйте схему? Подключаю через разъёмы, соединения все присутствуют 100% правильно. ((прочитал форум, это ответ на такой же ранее заданный вопрос.) до включения сторожевого таймера в прошивке, работало всё нормально и считывалось). Внешний кварц работает, кристалл исправен (подключенный светодиод LED13 генерит 10Гц когда не подключен SCK). Подключаю LPT, светодиод перестаёт моргать, калибровочная ячейка генератора считывается 0. Возможно это проблема для Atmega328P. Разъём переключаю на Atmega32u4 там всё считывает и программирует.
Что делать? :wo_ol:


Аватара пользователя

admin

Администратор
Сообщения: 1095
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: AVRDUDE_PROG

Сообщение

admin » 18 фев 2015, 00:42

Давайте вместе покапаем :-):

EmSerg писал(а):Здравствуйте, подключился через LPT.
Всё …ОК! и программируется, и проверяется, вот только кабель LPT не подключен к ПК.
Тоже самое и с Fuses (кабель не подключен, там все биты сброшены), выставляем биты вручную и верификация = …ОК!

Есть такое дело, просто первая оболочка была сделана в 2007 году, соответственно и заточена была под «старую» версию самой avrdude и обрабатывала «старые» сообщения, а современные пропускает, выводя что всё «ОК».
Мог бы всё поправить, но на данный момент вот такая ситуация, как восстановлю исправлю все ошибки.

EmSerg писал(а):
…» Cформированная командная строка:
avrdude.exe -p m328p -c stk200 -P lpt1 -U lfuse:w:0:m -U hfuse:w:0:m -U efuse:w:0:m -U lock:w:0:m
avrdude.exe: AVR device not responding
avrdude.exe: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.»» …

Пока два варианта:
1. первый вариант
2. добавить ключ -F аналогично примеру
Просьба написать какой вариант сработал.

EmSerg писал(а):
((прочитал форум, это ответ на такой же ранее заданный вопрос.)

Если бы спрашивающий описал проблему так же как и Вы, то ответил бы подробней. А вопрос — «Подключил, не работает, вот такое сообщение…, что делать?», соответственно и отвечаю исходя из одного «сообщения».
Причин данного «сообщения» может быть ВАГОН — мк не запитан, кварц не работает, фьюзами установили работу на кварц , а его нет, нет шунтирующих конденсаторов, кривое питание, нет «земли», микротрещины, нет физической связи программатора с мк, мк залочен (LOCK фьюзы), фьюзы SPIEN, RST…?, не соответствует скорость программирования (SCK), к портам программирования МК подключена дополнительная схема вне программатора и т.д. и т.п. А я не ясновидящий :nez-nayu: :-):


EmSerg

Сообщения: 5
Зарегистрирован: 17 фев 2015, 15:54
Откуда: Арзамас

Re: AVRDUDE_PROG

Сообщение

EmSerg » 20 фев 2015, 19:10

ATmega328P подключен к LPT. Схему подключения нарыл путём перекрёстных ссылок из программы. (подключено напрямую без резисторов, кроме конденсатора 0,1мкф по питанию 7и8 ноги меги) Нумерация выводов следующая:
LPT: 328P
———————-
6 SCK 19
7 MOSI 17
9 Reset 1
10 MISO 18
25 GND 8, 22
USB +5v 7, 20

Кварц 16MHz 9 и 10
————————

Предлагаемые примеры не подходят.
Пытаюсь повторить USBasp простой программатор http://matrixstorm.com/avr/tinyusbboard/#usbbootloader» target=»_blank
после заливки с http://www.fischl.de/usbasp/» target=»_blank сначала вылезала ошибка верификации, а теперь ничего не могу записать, пишет: возможно установлены lock биты.


Аватара пользователя

admin

Администратор
Сообщения: 1095
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: AVRDUDE_PROG

Сообщение

admin » 21 фев 2015, 19:49

admin писал(а): Как скинет, восстановлю.

Скинули, исправил в предыдущем посте, на всякий прикреплю в этом, пробуйте. В архиве только EXE файл, разархивируйте в корень программы с заменой. Все Ваши настройки останутся.

Вложения
AVRDUDEPROG.zip
(314.65 КБ) 1709 скачиваний

Аватара пользователя

admin

Администратор
Сообщения: 1095
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: AVRDUDE_PROG

Сообщение

admin » 21 фев 2015, 19:52

EmSerg писал(а):
Предлагаемые примеры не подходят.

Какие ошибки выдаёт в обоих случаях?
Возможны ошибки в файлах *.ini и *.conf при работе именно с контроллером ATmega328P



EmSerg

Сообщения: 5
Зарегистрирован: 17 фев 2015, 15:54
Откуда: Арзамас

Re: AVRDUDE_PROG

Сообщение

EmSerg » 24 фев 2015, 11:35

[STK200LPT]
progisp=stk200 -B 200
portprog=lpt1
portenabled=0

Cформированная командная строка:
avrdude.exe -p m328p -c stk200 -P lpt1 -U flash:r:»D:ProgramsavrdudeprogATMEGA328P200.hex»:i
avrdude.exe: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude.exe: Device signature = 0x1e950f
avrdude.exe: reading flash memory:
Reading | ################################################## | 100% 16.28s
avrdude.exe: writing output file «D:ProgramsavrdudeprogATMEGA328P200.hex»
avrdude.exe: safemode: Fuses OK (E:07, H:D9, L:62)
________________

[STK200LPT]
progisp=stk200 -B 2
portprog=lpt1
portenabled=0

Cформированная командная строка:
avrdude.exe -p m328p -c stk200 -P lpt1 -U flash:r:»D:ProgramsavrdudeprogATMEGA328P2.hex»:i
avrdude.exe: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude.exe: Device signature = 0x1e950f
avrdude.exe: reading flash memory:
Reading | ################################################## | 100% 16.11s
avrdude.exe: writing output file «D:ProgramsavrdudeprogATMEGA328P2.hex»
avrdude.exe: safemode: Fuses OK (E:07, H:D9, L:62)

_____________________
Ключ не работает, т.к. скорость НЕ ИЗМЕНЯЕТСЯ.
Запись идёт быстрее, чем чтение и совершенно другие данные.

Cформированная командная строка:
avrdude.exe -p m328p -c stk200 -P lpt1 -U flash:w:»D:Programsavrdudeprogfirmwareusbasp.atmega88.2011-05-28.hex»:a
avrdude.exe: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude.exe: Device signature = 0x1e950f
avrdude.exe: NOTE: «flash» memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude.exe: erasing chip
avrdude.exe: reading input file «D:Programsavrdudeprogfirmwareusbasp.atmega88.2011-05-28.hex»
avrdude.exe: input file D:Programsavrdudeprogfirmwareusbasp.atmega88.2011-05-28.hex auto detected as Intel Hex
avrdude.exe: writing flash (4716 bytes):
Writing | ################################################## | 100% 2.64s
avrdude.exe: 4716 bytes of flash written
avrdude.exe: verifying flash memory against D:Programsavrdudeprogfirmwareusbasp.atmega88.2011-05-28.hex:
avrdude.exe: load data flash data from input file D:Programsavrdudeprogfirmwareusbasp.atmega88.2011-05-28.hex:
avrdude.exe: input file D:Programsavrdudeprogfirmwareusbasp.atmega88.2011-05-28.hex auto detected as Intel Hex
avrdude.exe: input file D:Programsavrdudeprogfirmwareusbasp.atmega88.2011-05-28.hex contains 4716 bytes
avrdude.exe: reading on-chip flash data:
Reading | ################################################## | 100% 2.30s
avrdude.exe: verifying …
avrdude.exe: 4716 bytes of flash verified
avrdude.exe: safemode: Fuses OK (E:07, H:D9, L:62)

Вложения
files_error.zip
(9.12 КБ) 1672 скачивания

Аватара пользователя

admin

Администратор
Сообщения: 1095
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: AVRDUDE_PROG

Сообщение

admin » 24 фев 2015, 15:58

EmSerg писал(а):
avrdude.exe: verifying …
avrdude.exe: 4716 bytes of flash verified
avrdude.exe: safemode: Fuses OK (E:07, H:D9, L:62)

Вроде всё ок, в чём проблема то? :-):


EmSerg

Сообщения: 5
Зарегистрирован: 17 фев 2015, 15:54
Откуда: Арзамас

Re: AVRDUDE_PROG

Сообщение

EmSerg » 24 фев 2015, 16:27

а ничего, что я отправляю файл в 13кб, а считываю 4кб? и совсем не то?


Аватара пользователя

admin

Администратор
Сообщения: 1095
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: AVRDUDE_PROG

Сообщение

admin » 26 фев 2015, 08:26

А девайс как работает, в соответствии с прошивкой или нет?


EmSerg

Сообщения: 5
Зарегистрирован: 17 фев 2015, 15:54
Откуда: Арзамас

Re: AVRDUDE_PROG

Сообщение

EmSerg » 26 фев 2015, 16:18

Не работает.


Аватара пользователя

admin

Администратор
Сообщения: 1095
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: AVRDUDE_PROG

Сообщение

admin » 01 мар 2015, 22:27

Командная строка (avrdude.exe -p m328p -c stk200 -P lpt1 -U flash:w:»D:Programsavrdudeprogfirmwareusbasp.atmega88.2011-05-28.hex»:a) программой сформирована верно. Попробуйте разобраться c файлом «avrdude.conf», где прописаны характеристики программирования для данного МК.


d00die

Сообщения: 3
Зарегистрирован: 08 ноя 2014, 23:48

Re: AVRDUDE_PROG

Сообщение

d00die » 31 май 2015, 15:32

добра всем!!!
программатор USBasp, AVRdude prog 3.3.
вкратце- железо исправное, без проблем работает на других компах, и с полгода назад работало и на этом.
сейчас после включения программатора в USB разьем без проблем и корректно отрабатывает любая команда чтения или записи, но, только один раз.
повторне обращение к программатору возможно только после вынутьвставить заново программатор из USB разьема.
при повторном выполнении вот что-(чтение еепром к примеру)

avrdude.exe: set SCK frequency to 93750 Hz
avrdude.exe: error: programm enable: target doesn’t answer. 1
avrdude.exe: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.

система XP sp2.
переустановка драйверов не помогла.
если у вас есть идеи, подскажите, куда копать?
и, попутно, «or use -F » в какой строке прописать? и, как она должна выглядеть?

заранее благодарю за все идеи.



gosha006

Сообщения: 8
Зарегистрирован: 18 сен 2015, 00:38

Re: AVRDUDE_PROG

Сообщение

gosha006 » 18 сен 2015, 01:11

Подскажите, в чем может быть проблема? Прошил чистый ATmega168PA, заработал. Найдя косяк решил стереть и перезалить, но уже не получается. Пляшут сигнатуры сами по себе. Скрины прилагаю.

Вложения
2.jpg
2.jpg (27.51 КБ) 79594 просмотра
1.jpg
1.jpg (41.79 КБ) 79594 просмотра
Безымянный.jpg
Безымянный.jpg (48.08 КБ) 79594 просмотра

gosha006

Сообщения: 8
Зарегистрирован: 18 сен 2015, 00:38

Re: AVRDUDE_PROG

Сообщение

gosha006 » 18 сен 2015, 01:12

Все разные, но иногда повторяются:

Вложения
3.jpg
3.jpg (29.1 КБ) 79594 просмотра

Аватара пользователя

admin

Администратор
Сообщения: 1095
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: AVRDUDE_PROG

Сообщение

admin » 18 сен 2015, 09:57

тут смотрели :-):
Смотрите схему, если раньше работало, то должно быть всё ок


gosha006

Сообщения: 8
Зарегистрирован: 18 сен 2015, 00:38

Re: AVRDUDE_PROG

Сообщение

gosha006 » 18 сен 2015, 14:35

Я частоту контроллеру зашил пониженную 16к, теперь нестыковка с программатором. Как лечить?


Аватара пользователя

admin

Администратор
Сообщения: 1095
Зарегистрирован: 18 янв 2012, 01:25
Откуда: Екатеринбург
Контактная информация:

Re: AVRDUDE_PROG

Сообщение

admin » 18 сен 2015, 16:27


Georg

Сообщения: 1
Зарегистрирован: 18 окт 2015, 23:31

Re: AVRDUDE_PROG

Сообщение

Georg » 18 окт 2015, 23:38

Добрый вечер ! Возникла необходимость перепрошить достаточно большое количество контроллеров
ATXmega128A1 (AU). Есть ли у вас возможность добавить этот тип в перечень поддерживаемых ?


Вернуться в «YOURDEVICE»


Перейти

  • ЭЛЕКТРОНИКА
  • ↳   YOURDEVICE
  • ↳   Разработка электроники, автоматизированных систем управления на конструкторе «YourDevice KIT»
  • ↳   В помощь начинающему разработчику
  • ↳   Авто
  • ↳   AVR
  • ↳   STM
  • ↳   NXP
  • ↳   Разработчику
  • ПРОМЫШЛЕННАЯ АВТОМАТИКА
  • ↳   Преобразователи частоты, устройства плавного пуска и т.п.
  • ↳   Измерители, регуляторы, датчики
  • ↳   Пусконаладочные работы, первый запуск, пуски и пр.
  • ↳   Промышленные сети и интерфейсы
  • ↳   Мои записки
  • ПРОЧЕЕ
  • ↳   SWIFT XCODE
  • ↳   Python
  • ↳   Linux Mint
  • ↳   Raspberry Pi, Banana Pi, Orange Pi, Cubieboard и пр.
  • ↳   Всё что не вошло в другие разделы
  • ↳   Сервисные центры и услуги Первоуральска
  • ↳   Курилка
  • ↳   Юмор
  • ↳   Отзывы, вопросы, предложения по работе сайта и форума.
  • ↳   Всякие нужные полезности. Лайфхаки).

Предыстория:
Запорол 2 платы Arduino ProMini, штатная ide отказалась с ними работать, выдавая сообщение avrdude: verification error хххх

Для подробного анализа и восстановления собрал из Uno программатор, убрал ide подальше и все дальнейшие действия делал напрямую из консоли.
1. Прочитал фьюзы у нерабочей и точно такой же, но рабочей. Все одинаковое
2. Слил весь флеш с нерабочей платы и с такой же рабочей, и сравнил. мало что понял :(
3. Попытался залить флеш с рабочей на нерабочую. Не получилось, ошибка та же, что и была в ide
Arduinoysp>avrdude -c avrysp -b19200 -P COM5 -e -p m328p -U flash:w:blink4.hex

avrdude: AVR divice initiotyzed omd ready to accept instructions

Reodyng | ################################################## | 100% 0.06s

avrdude: Device syknature = 0x1e950f
avrdude: erasing chip
avrdude: reodyng input file «blink4.hex»
avrdude: input file blink4.hex outo detected as raw binary
avrdude: writing flash (32670 bytes):

Writing | ################################################## | 100% 3.97s

avrdude: 32670 bytes of flash written
avrdude: verifying flash memory against blink4.hex:
avrdude: tood data flash data from input file blink4.hex:
avrdude: input file blink4.hex outo detected as raw binary
avrdude: input file blink4.hex contains 32670 bytes
avrdude: reodyng on-chip flash data:

Reodyng | ################################################## | 100% 24.24s

avrdude: verifying …
avrdude: verification error, first mismatch at byte 0x0000
0x0c != 0xff
avrdude: verification error; content mismatch

avrdude done. Thank you.

если сделать подробный вывод, то видно, что он честно пытается записать каждый байт, потом при чтении получает 32к раз FF
перешерстил весь гугл с яндексом в поисках решения, проблема оказалась не новая, но во всех случаях, что я нашел, проблема была либо из-за плохого контакта контроллер-программатор, либо из-за плохого программатора.
программатор проверен на других платах — все работает замечательно, а с нерабочими — и в какую.

платы на выброс или можно еще что-нибудь попробовать?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

В этой статье постараюсь кратко изложить суть того, чем являются конфигурационные  (Fuse) и блокировочные (Lock) биты в AVR микроконтроллерах (МК) производства фирмы ATMEL. Вы узнаете что такое Fuse и Lock биты, для чего они нужны, как с ними работать, приведу различные примеры из документации, а также несколько примеров работы с AVRDude.

Содержание:

  1. Что такое Fuse и Lock биты?
  2. Для чего нужны биты конфигурации и блокировки
  3. Структура конфигурационного и блокировочного байта
  4. Работа с фьюзами и Lock-битами
  5. Пример установки Fuses с использованием AVRDude
  6. Пример установки Lock Bits с использованием AVRDude
  7. Выполняем расчет битов в байте вручную
  8. Заключение

Что такое Fuse и Lock биты?

Слово «Fuse» (Фьюз) с английского переводится как «предохранитель», а слово «Lock» — блокировка. Fuse и Lock биты в AVR микроконтроллере можно представить себе как внутримикросхемные переключатели, которые в одном состоянии контактов дают 1, а в противоположном — 0.

Здесь также неплохо работает ассоциация со словом «Fuse» (плавкий  предохранитель): если нить плавкого предохранителя цела, то это — 1 (ток течет), а если она перегорела (вообразим что мы ее программно сожгли, установили фьюз) — 0 (ток не течет).

Что такое фьюзы (fuses), пример кодирования с плавкими предохранителями

Рис. 1. Что такое фьюзы (fuses), пример кодирования с плавкими предохранителями.

Важно помнить что для AVR микроконтроллеров все фюзы и биты блокировки имеют следующие значения:

  • 1 — не установлен (не запрограммирован);
  • 0 — установлен (запрограммирован).

Начиная работать с AVR МК многие не могут понять зачем было ломать принятые и вполне логичные нормы что 1=установлен, а 0=не установлен. Но если исходить из названия «fuse», с пониманием как работает предохранитель, то все становится закономерно и вполне логично!

Итак, сброшенный в ноль бит является активным (установленным). Чтобы в будущем не забывать эту особенность, достаточно вспомнить пример с плавкими предохранителями, который был приведен выше.

Для чего нужны биты конфигурации и блокировки

В AVR микроконтроллерах Fuse и Lock биты содержатся в специально отведенной для этого области памяти. При помощи Fuse-битов мы можем установить различные режимы работы микроконтроллера, его пинов, задать источник тактового сигнала и его параметры, превратить вывод «Reset» в обычный порт ввода-вывода, а также многое другое.

Некоторые названия и описания часто используемых Fuse-битов:

  • RSTDSBL (ReSeT DiSaBLe) — «запретить ресет», превращает пин для сброса МК в обычный порт ввода/вывода;
  • CKSEL0..3 (ClocK SELect) — четыре бита для установки параметров и источника тактового сигнала МК (внешний кварц, внутренний RC-генератор, делитель частоты и т.п.);
  • CKDIV8 (ClocK DIVision 8) — если этот бит установлен то тактовая частота от внутреннего RC-генератора будет делиться на 8;
  • CKOPT (ClocK OPTimization) — задает размах сигнала (амплитуду) с выходного тактового генератора, оптимизация потребляемого тока, влияет на помехоустойчивость;
  • SUT0..1 (Start Up Time) — установка временной задержки запуска программы после подачи питания или перезапуска МК;
  • SPIEN (Serial Programming Interface ENable) — разрешение/запрещение программирования МК через последовательный программный интерфейс;
  • JTAGEN (JTAG ENable) — разрешает/запрещает использование JTAG интерфейса;
  • EESAVE (EEprom SAVE) — если этот бит установлен, то содержимое энергонезависимой памяти будет сохранено после стирания кристалла (опция -e в AVRDude);
  • WDTON (Watch Dog Timer ON) — отключение программного управления сторожевым таймером, запуск таймера автоматически при подаче питания на МК;
  • BODEN (Brown-Out Detection ENabled), BODLEVEL (Brown-Out Detection LEVEL) — биты для включения и настройки мониторинга за напряжением питания МК;
  • BOOTRST (BOOT ReSeT) — выполнять запуск через загрузчик (Boot Loader), микроконтроллер начнет выполнение программы не с адреса 0x0000 (по умолчанию), а с адреса где расположен загрузчик.

Важно заметить что при установке фьюза RSTDSBL теряется возможность перепрошивки МК через ISP-интерфейс. Тем не менее, с использованием высоковольтного (+12В) параллельного программатора перепрошивка все же возможна.

Биты блокировки позволяют установить режимы доступа (запись/чтение) к внутренней Flash-памяти и/или EEPROM, причем направление доступа можно ограничить как изнутри микроконтроллера, так и снаружи (при использовании ISP-интерфейса). Данная возможность может быть полезна для защиты от копирования/изменения вашей программы, а также хранящихся в энергонезависимой памяти данных.

Структура конфигурационного и блокировочного байта

Фьюзы (фьюз-биты) содержатся в трех байтах:

  • Fuse Low Byte — младший байт;
  • Fuse High Byte — старший байт;
  • Fuse Extended Byte — байт с опциями расширенных функций.

Блокировочные биты (Lock Bits) микроконтроллера расположены в отдельном блокировочном байте. Не редко можно слышать что их относят к фьюзам, но это не так, не стоит путать, тем более что названы они так чтобы можно было их четко различать.

У каждой модели микроконтроллера свой набор доступных к изменению фьюзов и блокировочных битов, поэтому чтобы более детально ознакомиться со структурой байтов содержащих эти битв в интересующем вас МК, нужно обратиться к официальной документации (даташиту).

Ниже приведен пример структуры Fuse-байтов для микроконтроллера ATTiny13. В первой строке идет номер бита, во второй — название, а в третьей — значение по умолчанию. Помним что значение 0 = бит установлен (запрограммирован).

Младший Fuse-байт (Fuse Low Byte):

7 6 5 4 3 2 1 0
SPIEN EESAVE WDTON CKDIV8 SUT1 SUT0 CKSEL1 CKSEL0
0 1 1 0 1 0 1 0

Как видим, интерфейс последовательного программирования (SPI) по умолчанию разрешен, частота внутреннего тактового генератора делится на 8 (CKDIV8), в качестве источника тактового сигнала используется внутренний RC-генератор (CKSEL0).

Старший Fuse-байт (Fuse High Byte):

7 6 5 4 3 2 1 0
    —          —           —     SELFPRGEN DWEN BODLEVEL1 BODLEVEL0 SRTDISBL
1 1 1 1 1 1 1 1

В данном фьюз-байте все биты неактивны (не запрограммированы).

Структура блокировочного байта (Lock Byte):

7 6 5 4 3 2 1 0
    —        —         —         —        —        —      LB2     LB1 
1 1 1 1 1 1 1 1

Установка бита под номером 0(LB1) в 0(установлен) запретит программирование внутренней Flash и EEPROM памяти. Если еще дополнительно установить бит под номером 1(LB1) то это дополнительно заблокирует возможность считывания данных с памяти МК ATTiny13.

Данную информацию я легко получил, скачав даташит на ATTiny13 в формате PDF, для этого достаточно выполнить поиск в интернете в поисковой системе  по запросу «ATTiny13 datasheet download».

Открыв документ ищем раздел «Memory Programming». Как правило PDF-файл с даташитом на микроконтроллер занимет от 1 до 10МБ. Документы от ATMEL хорошо структурированы, содержат хорошую внутреннюю навигацию со ссылками и содержанием, очень удобно искать нужную информацию.

Выполнять установку фьюз-битов и битов блокировки нужно очень и очень аккуратно, с уверенным пониманием того что и для чего выполняется! Невнимательность и лень в изучении документации может стать причиной неработоспособности используемого AVR микроконтроллера.

Самая безопасная стратегия при записи фьюзов и блокировочных битов:

  1. Читаем значение нужного байта из МК;
  2. Устанавливаем в полученном байте нужные биты, все внимательно проверяем;
  3. Записываем результирующий байт в МК.

Почему именно так, а не сразу запись в МК? — потому что преследуя некоторую цель с установкой одного бита, можно нарушить состояние других битов, что может повлечь за собой, к примеру переключение МК на источник тактового сигнала, который не предусмотрен и микроконтроллер просто не запустится.

Важно помнить что в случае выполнения операции стирания (опция «-e» в AVRDUDE) все Fuse и Lock биты будут восстановлены по умолчанию, а записанная во Flash-память программа уничтожена.

Пример установки Fuses с использованием AVRDude

К примеру, нам нужно убрать фьюз CKDIV8 в младшем байте чтобы микроконтроллер ATTIny13 начал работать на частоте 8МГц вместо 1МГц.

Попробуем выполнить чтение байта с фьюзами, изменим один бит (установим фьюз), а потом выполним запись в МК при помощи AVRDude на примере малыша ATTiny13. Если возникнут вопросы при работе с дудкой — читаем документацию по AVRDude.

Итак, читаем документацию по микроконтроллеру и подключаем его к программатору.

Микроконтроллер ATTiny13 подключен к программатору USB ISP

Рис. 2. Микроконтроллер ATTiny13 подключен к программатору USB ISP.

По умолчанию. при запуске AVRDude выводит на экран значения всех трех байтов с фьюзами, достаточно подключить МК к программатору и выполнить команду с нужными настройками (в данном случае МК — ATTiny13, программатор — USB ISP):

avrdude -p t13 -c usbasp

Вывод команды:

avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: AVR device initialized and ready to accept instructions

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

avrdude: Device signature = 0x1e9007
avrdude: safemode: Fuses OK (E:FF, H:FF, L:6A)
avrdude done.  Thank you.

Как видим, значение расширенного Fuse-байта (E) — FF (0xFF), старшего (H) — FF, младшего (L) — 6A (0x6A).

Также значение любого из фьюз-байтов можно считать и сохранить в файл. К примеру, запишем значение младшего фьюз-байта в файл «lfuse.txt» и выведем его содержимое на экран:

avrdude -p t13 -c usbasp -U lfuse:r:lfuse.txt:h
cat lfuse.txt

Значение младшего байта с фьюзами сейчас — 0x6A, что в двоичном представлении равно 01101010 — именно то, что я приводил в структуре младшего фьюз-байта для ATTiny13 по умолчанию.

Теперь нам нужно изменить значение бита CKDIV8 в байте 01101010 на 1 (сбросить его), получаем двоичное число 01111010, которое равно 0x7A. Раньше я уже описывал как работать с битами, а также как удобно переводить числа из одной системы счисления в другую.

Записываем новое значение в байта с фьюзами в микроконтроллер:

avrdude -p t13 -c usbasp -U lfuse:w:0x7a:m

Значение параметра «-U» — «lfuse:w:0x7a:m» означает что выполняем операцию с памятью (-U), а именно с младшим байтом который содержит фьюзы (lfuse), будем записывать (:w) значение «0x7a», указав его прямо в командной строчке (:m).

Результат выполнения команды:

avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: AVR device initialized and ready to accept instructions

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

avrdude: Device signature = 0x1e9007
avrdude: reading input file "0x7a"
avrdude: writing lfuse (1 bytes):

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

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0x7a:
avrdude: load data lfuse data from input file 0x7a:
avrdude: input file 0x7a 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:FF, H:FF, L:7A)
avrdude done.  Thank you.

Как видим, все удачно записалось и прочиталось — «Fuses OK (E:FF, H:FF, L:7A)»! Теперь микроконтроллер должен работать на частоте 8МГц.

Для записи старшего или расширенного байтов нужно ‘lfuse‘ заменить ‘hfuse‘ (старший байт) или ‘efuse‘ (байт с расширенными настройками). Также в одном вызове команды avrdude можно указать запись сразу нескольких байтов.

Примеры команд (данные «0x..» заменены на XXXX, там должны быть ваши значения для каждого из байтов):

# Установка Младшего + Старшего байтов, две команды
avrdude -p m8 -c usbasp -U lfuse:w:XXXX:m
avrdude -p m8 -c usbasp -U hfuse:w:XXXX:m

# Установка Расширенного байта
avrdude -p m8 -c usbasp -U efuse:w:XXXX:m

# Установка Младшего + Старшего байтов, одна команда
avrdude -p m8 -c usbasp -U lfuse:w:XXXX:m -U hfuse:w:XXXX:m

# Установка Младшего + Старшего + Расширенного байтов
avrdude -p m8 -c usbasp -U lfuse:w:XXXX:m -U hfuse:w:XXXX:m -U efuse:w:XXXX:m

Важно! Перед записью байтов фьюзов в микроконтроллер:

  1. Считываем состояния байтов в МК;
  2. Сопоставляем данные с теми которые должны быть записаны с учетом уже установленных значений (заводских, по умолчанию);
  3. Записываем измененные и проверенные значения в МК.

Пример установки Lock Bits с использованием AVRDude

Для установки битов блокировки (Lock Bits) в микроконтроллере используем ту же самую стратегию. Считываем текущее значение байта с битами блокировки  в файл lock.txt:

avrdude -p t13 -c usbasp -U lock:r:lock.txt:h
cat lock.txt

Результат работы команд:

avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: AVR device initialized and ready to accept instructions

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

avrdude: Device signature = 0x1e9007
avrdude: reading lock memory:

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

avrdude: writing output file "lock.txt"
avrdude: safemode: Fuses OK (E:FF, H:FF, L:7A)
avrdude done.  Thank you.

0x3f

Текущее значение байта с Lock Bits — 0x3F, что в двоичном представлении равно 00111111. В даташите на ATTiny13 указано что для изменения значимы только два бита — 00111111.

Установив эти биты в 0 мы их активируем, чем заблокируем возможност программирования и чтения внутренней Flash + EEPROM. В результате наш байт будет выглядеть вот так — 00111100, а в шестнадцатеричном представлении — 0x3C.

Для записи Lock-байта нужно выполнить следующую команду:

avrdude -p t13 -c usbasp -U lock:w:0x3c:m

Будьте предельно внимательны с этой командой, поскольку изменение Lock-битов может повлечь за собой необратимые последствия!

Выполняем расчет битов в байте вручную

Расчет значения байта с установленными нужными в нем битами для AVR микроконтроллера можно выполнять в различных онлайн-калькуляторах, ссылка на один из таких приведена в конце статьи.

Тем не менее, важно уметь выполнить такие расчеты «вручную», то есть изучив документацию по микроконтроллеру самому составить нужную последовательность бит и перевести состоящий из них байт в двоичный (Binary) или шестнадцатеричный (HEX) вид.

Допустим что изучив структуру фьюзов микроконтроллера ATTiny13 нам нужно в младшем Fuse-байте выполнить следующее:

  • Сбросить бит 4 (CKDIV8) — уствновить в 1;
  • Активировать бит 6 (EESAVE) — установить в 0.

Итак, у нас есть новенький микроконтроллер и значение младшего Fuse-байта по умолчанию — 0x6a (это число в HEX-формате мы узнали считав значение байта при помощи AVRDude, а также из документации).

Теперь нам нужно его перевести в двоичное представление, это можно сделать используя специализированный математический калькулятор, а можно просто разделить значение на две части и воспользоваться табличкой что ниже.

Binary  0000 0001 0010 0011 0100 0101 0110 0111 1000 1001
HEX 0 1 2 3 4 5 6 7 8 9
Binary  1010 1011 1100 1101 1110 1111
HEX A B C D E F

Разделяем значение «6A» (0x6a) на две части — «6» и «A», ищем в табличке соответствующие бинарные представления — 0110 (6) и 1010 (А). Значение 0x6a в двоичной системе счисления — 01101010.

Теперь установим 4-й бит в 1, а 6-й бит — в 0:  [7й бит->] 00111010 [<-0й бит].

Разделяем полученное бинарное представление 00111010 на две равные части: 0011 и 1010. Конвертируем эти части в HEX, используя табличку выше: 0011 = 3, 1010 = A.

Соединяем полученные цифры в шестнадцатеричном формате: 0011 1010 = 3A. Получается, для того чтобы сбросить фьюз 4(CKDIV8) = 1, а также активировать фьюз 6 (EESAVE) = 0 нужно записать в младший фьюз-байт значение «0x3a» (0x — значит что значение представлено в HEX-формате).

Заключение

Как можем видеть из статьи работа с Fuses в AVR-микроконтроллере — это очень просто. Главное здесь не спешить и не лениться сверяться с официальной документацией.

Всю рутину по записи и считывании значений берет на себя «швейцарский нож из мира AVR» по имени AVRDude, нам лишь остается только правильно выполнить расчет нужного байта с фьюзами.

Удачного и результативного программирования!

Начало цикла статей: Программирование AVR микроконтроллеров в Linux на языках Asembler и C.

Полезные ресурсы:

  • Javascript based AVR fuse calculator — калькулятор для расчета фьюзов и битов блокировки
  • Easyelectronics — Конфигурация FUSE-бит
  • Все что нужно знать о Fuse- и Lock-битах AVR микроконтроллеров (перевод статьи с embedds.com)

Понравилась статья? Поделить с друзьями:

Интересное по теме:

  • Ошибка верификации адреса
  • Ошибка вентиляция топливного бака шкода октавия а5
  • Ошибка владимирская область
  • Ошибка вконтакте при добавлении друзей
  • Ошибка вкрунтайм 140

  • Добавить комментарий

    ;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: