Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Конфигурационные биты и биты защиты Для Mega16
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
QuickWitted
Я раньше работал с 51 серией - сейчас потребовалось больше производительности - перешел на AVR...
Выбрал МК ATmega16 написал и прогнал на эмуляторе прошивку, собрал SPI внутрисхемный программатор, залез в енет скачал PonyProg2000, но совершенно непонятно как выставлять конфигурационные биты и биты защиты Для Mega16 на PonyProg2000.... 05.gif

Из прочитанного стало ясно, что разные фирмы под включением/отключением битов подразумевают разное... (например по Атмелу включённые биты = 0 , а отключённые = 1 )
А при неправильном выставлении МК можно откачать только высоковольтным программированием...
(А у меня такого программатора нет )

Вопрос - как выставить (какие ставить галки в PonyProg2000) конфигурационные
биты и биты защиты Для Mega16 ?

В общем:
1) Сторожевым таймером я не пользуюсь...
2) Загрузочного сектора (само программирования) у меня нет
3) Отключать методы программирования МНЕ НЕ НАДО
4) Устанавливать запрет чтения/записи МНЕ тоже НЕ НАДО
5) кварц внешний (11,0592)
jasper
Если у вас последняя версия PonyProg2000, то она не даст изменить SPIEN, т.е. сделать проц нечитаемым. Так что, можете спокойно экспериментировать. smile.gif
ПММ, вам надо просто сбросить все галки.
oran-be
Да, и следуя дружескому совету от QuickWitted , не забывайте, что внутренний программер у АВРов тактируется от основного генератора и при експириментах с фузами генератора никто не запретит переключить их на работу с внешним генератором, вследствии чего проц тоже станет немым до тех пор, пока ему на XTAL1 не сунуть импульсы с какой-нибудь разумной частотой. Я сую ему с генератора импульсов 1 Мгц, кто-то сует с другой Меги, уже сконфигурированной на работу с внешним кварцем сигнал с лапки XTAL2. Мне уже раза 2-3 приходилось производить подобную процедуру, пользуясь ПониПрогом. Даже если запомнить, что 0 - это имеется ввиду "запрограммировано", то бишь с точки зрения программатора 1, а 1 - "незапрограммировано", т.е. 0. На фига придумали такую путаницу, непонятно, возможно для повышения сбыта. В производство мы вместе с хексом мы отдавали снимок экрана с фузами во избежании путаницы. Сейчас перешли на программирование с помощью Атмеловкого программера - стоит всего $50, а шьет на голову быстрее и с фузами рака мозгов нет.
jasper
Цитата
На фига придумали такую путаницу, непонятно, возможно для повышения сбыта. В производство мы вместе с хексом мы отдавали снимок экрана с фузами во избежании путаницы. Сейчас перешли на программирование с помощью Атмеловкого программера - стоит всего $50, а шьет на голову быстрее и с фузами рака мозгов нет.

PonyProg позволяет создавать скрипты, запускаешь один файл со скриптом и все. smile.gif
add
Цитата(jasper @ Jul 5 2007, 10:50) *
PonyProg позволяет создавать скрипты, запускаешь один файл со скриптом и все. smile.gif

это как? можно поподробнее..
jasper
В хелпе все расписано.
А в самом PonyProg – Script/Load and Run…
vesago
Наверное любым программатором можно загубить камешек - человеческий фактор однако. В плане однозначности мне лично нравится авреал. Там вероятность простановки неверных фузов минимальна. Вероятно донгл от понипрга там пойдет. Авреал с первого взгляда неприятен командной строкой. Но со временем понимаешь, что это скорее плюс нежели минус. Левый фуз точно не проставится от дрожания рук :0 Плюс быстрее дело идет если не одно устройство прошить надо. Я теперь программлю самопальными стк500 и айсом и тоже из командной строки.
GDI
У авреала только один, на мой взгляд недостаток - работа только с ЛПТ программаторами(STK-200, Byteblaster и т.п.), AVRDUDE более универсален в этом отношении. Командная строка - это плюс при производстве, т.к. разработчик может написать .bat(винды) или скрипт(линукс) файл и не будет никаких разночтений и ошибок. Кстати и AVReal и AVRDUDE умеют генерить на свободной ножке ЛПТ программатора меандр, для тактирования контроллера, чтоб оживлять при неправильно прошитых фьюзах.
Snaky
Цитата(oran-be @ Jul 5 2007, 12:23) *
Даже если запомнить, что 0 - это имеется ввиду "запрограммировано", то бишь с точки зрения программатора 1, а 1 - "незапрограммировано", т.е. 0. На фига придумали такую путаницу, непонятно, возможно для повышения сбыта.

Из FAQ к WinAVR:
9.9.26 Why have "programmed" fuses the bit value 0?
Basically, fuses are just a bit in a special EEPROM area. For technical reasons, erased E[E]PROM cells have all bits set to the value 1, so unprogrammed fuses also have a logical 1. Conversely, programmed fuse cells read out as bit value 0.
QuickWitted
Воз и поныне там twak.gif
Может объясните что и как ставить? sad.gif

Установленная галка => Это 1 => Опция выключена?

Про внешний кварц
галки на: CKSel1, CKSel3
галки нет на: CKSel0, CKSel2, CKOPT

Как отрубить бут область?
Т.е прерывания идут сразу после метки сброса...
галки на: IVSEL, BOOTSZ1, BOOTSZ0
галки нет на: BOOTRST

Время сброса максимальное - 16.0
галки нет на: SUT0, SUT1

Порог напряжения сброса схемы контроля питания = 4в
галки нет на: BODLEVEL, BODEN

JTAG включён
галки нет на: JTAGEN

Что ещё забыл?

Если не сложно закиньте сюда готовый скрипт от лошади...

Что бы не было конфузов, например с тактированием crying.gif
или как вариант посоветуете любой другой софт для программатора под WinSP2 ?


Вот откопал пример файла конфигурации 1n1p.e2s

#------ START --------
#Programming sequence
SELECTDEVICE ATmega8
CLEARBUFFER
LOAD-PROG FLEA.hex
#LOAD-DATA FLEA.epp

PAUSE "Connect and powerup the 1n1p, are you ready?"
READ-CALIBRATION 0x21FF DATA 3 # <EEProm 8Mhz

ERASE-ALL
WRITE&VERIFY-ALL

#Pay attention to NOT disable RSTDISBL
#FUSE HIGH BYT:{RSTDISBL,WDTON,x,CKOPT,EESAVE,BOOTSZ1,BOOTSZ0,BOOTRST} FUSE LOW BYT:{BODLEVEL,BODEN,SUT0,CKSEL3,CKSEL2,CKSEL1,CKSEL0}
# 0 0 1 0 0 1 1 0 0 0 0 1 1 0 1 1
WRITE-FUSE 0x261b

#Lock: {X,X,X,X,X,x,"Lock2 ","Lock1 "}
# 0 0 0 0 0 0 0 0
WRITE-LOCK 0x00
#------- END ---------
jasper
Цитата
Установленная галка => Это 1 => Опция выключена?

Б-р-р-р…Версия PonyProg2000 какая?
Установленная галка =>Это 0=>Т.е. запрограммировано (programmed)
Если в PonyProg открыть панель “Configuration and Security bits” там внизу написано.


В скрипте 1 - значит запрограммировано, т.е. галка установлена
Вот пример скрипта для вас:

#------ START --------
#Programming sequence
SELECTDEVICE ATMEGA16
CLEARBUFFER

#Вместо myprog.hex и myprog.eep подставляем свою программу
LOAD-PROG myprog.hex
LOAD-DATA myprog.eep

PAUSE "Готов к программированию?"
ERASE-ALL
WRITE&VERIFY-ALL

#Fuse High Byte: {OCDEN,JTAGEN,SPIEN,CKOPT,EESAVE,BOOTSZ1,BOOTSZ0,BOOTRST}
# 0 0 0 0 0 0 0 0
#Fuse Low Byte: {BODLEVEL,BODEN,SUT1,SUT0,CKSEL3,CKSEL2,CKSEL1,CKSEL0}
# 0 0 0 0 0 0 0 0
WRITE-FUSE 0x0000

#Lock: {X,X,BLB12,BLB11,BLB02,BLB01,LB2,LB1}
# 0 0 0 0 0 0 0 0
WRITE-LOCK 0x00
#------- END ---------
Dimmy
Отметь для себя, что в пони все наёборот чем в даташите. Т.е. по "нашему" - правильно. Для программирования под кварц 16МГц Mega16 в пони у меня:

CKSEL3,CKSEL2,CKSEL1,CKSEL0 - галка СБРОШЕНА

CKOPT - СБРОШЕНА

JTAGEN - СБРОШЕНА (это значит, что JTAG действительно выключен)
OLEG_BOS
Цитата(QuickWitted @ Jul 5 2007, 12:56) *
Воз и поныне там twak.gif
Может объясните что и как ставить? sad.gif


READ-CALIBRATION 0x21FF DATA 3 # <EEProm 8Mhz

ERASE-ALL
WRITE&VERIFY-ALL


А вот с READ-CALIBRATION будьте поосторожней !!!.... Был у меня прикол из-за недопонимания этой процедуры. Суть ее проста - считать значения настройки калибровки внутреннего RC генератора и записать в нужную область памяти ( в данном примере в 0x21FF DATA 3 # <EEProm 8Mhz)... Прикол был в том что у меня фактически перезаписывался файл .hex по адрессу куда указывала READ-CALIBRATION значением калибровочного регистра.... Поведение программы после этого было не предсказуемым 07.gif

Так вот: если вы не используете RC генератор - лучше вообще убрать READ-CALIBRATION или записывать в тот адресс где уж точно нет других данных smile.gif
QuickWitted
jasper
Это получается ПУСТАЯ болванка?

#Fuse High Byte: {OCDEN,JTAGEN,SPIEN,CKOPT,EESAVE,BOOTSZ1,BOOTSZ0,BOOTRST}
# 0 0 0 0 0 0 0 0
#Fuse Low Byte: {BODLEVEL,BODEN,SUT1,SUT0,CKSEL3,CKSEL2,CKSEL1,CKSEL0}
# 0 0 0 0 0 0 0 0
WRITE-FUSE 0x0000

Так что писать то? У тебя сверху одно, а с низу нули пробиты...

В общем вопрос остался что выставлять И КАК ?
Или хотя бы: В каком порядке эти биты идут в переменной WRITE-FUSE
jasper
Я же уже ответил на вопрос - надо сбросить все галки.
И вот Dimmy это подверждает.
Цитата(Dimmy @ Jul 5 2007, 16:35) *
Отметь для себя, что в пони все наёборот чем в даташите. Т.е. по "нашему" - правильно. Для программирования под кварц 16МГц Mega16 в пони у меня:

CKSEL3,CKSEL2,CKSEL1,CKSEL0 - галка СБРОШЕНА

CKOPT - СБРОШЕНА

JTAGEN - СБРОШЕНА (это значит, что JTAG действительно выключен)

Так что, это не пустая болванка, а рабочий скрипт. Подставляете название своих файлов и запускаете его, все будет нормально.
QuickWitted
Цитата(jasper @ Jul 6 2007, 08:27) *
Я же уже ответил на вопрос - надо сбросить все галки.
И вот Dimmy это подверждает.
Так что, это не пустая болванка, а рабочий скрипт.
Подставляете название своих файлов и запускаете его, все будет нормально.


У меня кварц не 3-8 метров, а 11,0592 1111493779.gif
В этом примере мне КАК МСИНИМУМ CKOPT надо установить в 1

Остальное нет возможности проверить...
Но Jtagen и OCDEN - выключать не хочется crying.gif

Задержку на 16мс.

Даже зная о защите: SPI - выключать не совсем разумно

А бут блок в твоём примере отключен?

Запускаю эмулятор (Algorithm Builder) лезу в свойства проекта
там написано Checked=unprogrammed (т.е. на оборот по сравнению с Лошадью)

Выбираю: внешний кварц 1-16 метров он тут же
конфигурирует:
Галки на CKSEL0-CKSEL3
Галки нет CKOPT

Выбираю: внешний кварц 3-8 метров он тут же
конфигурирует:
Галки на CKSEL0-CKSEL3 и CKOPT

Обратный процесс - снимаю все галки
он мне на это - External clock
jasper
Хорошо, насчет CKOPT, это возможно.
JTAG и OCDEN тоже включим.
По поводу SPIEN в даташите написано:
Цитата
Notes: 1. The SPIEN Fuse is not accessible in SPI Serial Programming mode.

Так что, на самом деле все равно.

Тогда получиться:
#------ START --------
#Programming sequence
SELECTDEVICE ATMEGA16
CLEARBUFFER

#Вместо myprog.hex и myprog.eep подставляем свою программу
LOAD-PROG myprog.hex
LOAD-DATA myprog.eep

PAUSE "Готов к программированию?"
ERASE-ALL
WRITE&VERIFY-ALL

#Fuse High Byte: {OCDEN,JTAGEN,SPIEN,CKOPT,EESAVE,BOOTSZ1,BOOTSZ0,BOOTRST}
# 1 1 1 1 0 0 0 0
#Fuse Low Byte: {BODLEVEL,BODEN,SUT1,SUT0,CKSEL3,CKSEL2,CKSEL1,CKSEL0}
# 0 0 0 0 0 0 0 0
WRITE-FUSE 0xf000

#Lock: {X,X,BLB12,BLB11,BLB02,BLB01,LB2,LB1}
# 0 0 0 0 0 0 0 0
WRITE-LOCK 0x00
#------- END ---------
QuickWitted
Вот кусок откопал

#Pay attention to NOT disable RSTDISBL
#FusesH:
# DWEN, EESAVE, SPIEN, WDTON, BODLEV2, BODLEV1, BODLEV0, RSTDISBL}
# 1 1 0 1 1 0 0 1
#FusesL:
# CKDIV, CKOUT, SUT1, SUT0, CKSEL3, CKSEL2, CKSEL1, CKSEL0}
# 1 1 1 1 1 1 1 1
WRITE-FUSE 0x2600
jasper
Цитата
Вот кусок откопал

И к чему это? wacko.gif
К меге16 не имеет никакого отношения.
QuickWitted
Цитата(jasper @ Jul 6 2007, 10:16) *
И к чему это? wacko.gif
К меге16 не имеет никакого отношения.


Просто показывает что у других...
А так получается следующее

#------ START --------
#Programming sequence
SELECTDEVICE ATMEGA16
CLEARBUFFER

#Вместо myprog.hex и myprog.eep подставляем свою программу
LOAD-PROG Main.hex
LOAD-DATA Main.eep

PAUSE "Готов к программированию?"
ERASE-ALL
WRITE&VERIFY-ALL

# 1) Включить отладку - OCDEN,JTAGEN,SPIEN =1
# 2) Кварц 1-16 - CKSEL3,CKSEL2,CKSEL1,CKSEL0 =0 и CKOPT =1
# 3) Задержка Max - SUT1 =1, SUT0=0
# 4) Всё остальное как есть

# Fuse High Byte:
# OCDEN, JTAGEN, SPIEN, CKOPT, EESAVE, BOOTSZ1, BOOTSZ0, BOOTRST}
# 1 1 1 1 0 0 0 0
# Fuse Low Byte:
# BODLEVEL, BODEN, SUT1, SUT0, CKSEL3, CKSEL2, CKSEL1, CKSEL0}
# 0 0 1 0 0 0 0 0
# Одним словом это 1111000000100000
WRITE-FUSE 0xF020

#Lock: {X,X,BLB12,BLB11,BLB02,BLB01,LB2,LB1}
# 0 0 0 0 0 0 0 0
WRITE-LOCK 0x00
#------- END ---------
jasper
Цитата
# 3) Задержка Max - SUT1 =1, SUT0=0

Нет макс. задержка при использовании внешнего кристалла будет SUT1 =1, SUT0=1 (по даташит), т.е. в скрипте должно быть наоборот SUT1 =0, SUT0=0.
А остальное правильно.
QuickWitted
Цитата(jasper @ Jul 6 2007, 12:29) *
Нет макс. задержка при использовании внешнего кристалла будет SUT1 =1, SUT0=1 (по даташит), т.е. в скрипте должно быть наоборот SUT1 =0, SUT0=0.


Ну тогда последний вариант:
Вставить в текстовый файл и задать расширение *.e2s

Ну и ещё раз уточню - это без загрузчика?
(т.е прерывания идут сразу за меткой старта)

#------ START --------
#Programming sequence
SELECTDEVICE ATMEGA16
CLEARBUFFER

#Вместо Main.hex и Main.eep подставляем свою программу
LOAD-PROG Main.hex

#Если есть - вставить и разремить
#LOAD-DATA Main.eep

PAUSE "Готов к программированию?"
ERASE-ALL
WRITE&VERIFY-ALL

# 1) Включить отладку - OCDEN,JTAGEN,SPIEN =1
# 2) Кварц 1-16 - CKSEL3,CKSEL2,CKSEL1,CKSEL0 =0 и CKOPT =1
# 3) Задержка Max - SUT1,SUT0=0
# 4) Всё остальное как есть

# Fuse High Byte:
# OCDEN, JTAGEN, SPIEN, CKOPT, EESAVE, BOOTSZ1, BOOTSZ0, BOOTRST}
# 1 1 1 1 0 0 0 0
# Fuse Low Byte:
# BODLEVEL, BODEN, SUT1, SUT0, CKSEL3, CKSEL2, CKSEL1, CKSEL0}
# 0 0 0 0 0 0 0 0
# Одним словом это 1111000000000000
WRITE-FUSE 0xF000

#Lock: {X,X,BLB12,BLB11,BLB02,BLB01,LB2,LB1}
# 0 0 0 0 0 0 0 0
WRITE-LOCK 0x00
#------- END ---------
jasper
Цитата
Ну и ещё раз уточню - это без загрузчика?
(т.е прерывания идут сразу за меткой старта)

Точно, это без загрузчика.
QuickWitted
Всем спасибо - программатор запустился... beer.gif
(прошил мигалку - мигает светодиодами состояния)

Щас думаю на тему авт. блокировки работы проги под
программатором, т.к. в этот же разъем, по замыслу,
должна вставляться флешка MMС в режиме SPI ,
но это уже другая история... yeah.gif
jasper
Цитата
Всем спасибо - программатор запустился... beer.gif
(прошил мигалку - мигает светодиодами состояния)

Замечательно!
Я бы сильно удивился, если бы не заработало.

Цитата
Щас думаю на тему авт. блокировки работы проги под
программатором, т.к. в этот же разъем, по замыслу,
должна вставляться флешка MMС в режиме SPI ,
но это уже другая история...

А чего тут думать, чипселект на флэшку с подтяжкой завел и все. laughing.gif
QuickWitted
Не всё так просто...
1) МК на 5 вольт флеш 3 05.gif
2) Тут вопрос чтобы МК не начал дёргать SPI smile3046.gif
пока к нему внутрисхемный программер подключен...

Но это нетрудно тройку транзисторов и увсё...
QuickWitted
Второй день подключал ЖК дисплей
на 51 серии работает, а на меги - нет...
Потом подключил плату со светодиодами
и обнаружил, что 4 конца на порту С - не
подают признаков жизни... tort.gif

Покопавшись в доке выяснилось, что от них
отрастает Джейтаг... cranky.gif

Отключил его при прошивке - пошло...
alexander tom
Привет!

А возможно ли склонировать чип mega16 целиком с прошивкой? И кто бы мог бы это сделать за уе если это реально?

Спасибо
lech196
Вопрос по битам защиты.
Как я понял из даташита установкой двух битов LockBit2 и LockBit1 выбирается режим защиты памяти кристала.
Lock2 Lock1
1 1 - нет защиты
1 0 - защита от программирования (записи)
0 0 - защита от записи и чтения

т.е. нет режима в котором возможна запись, но невозможно чтение? к примеру это было бы удобно для обновления ПО устройств, но в тоже время хотелось бы чтобы они были защищены от чтения...
GDI
Цитата
т.е. нет режима в котором возможна запись, но невозможно чтение? к примеру это было бы удобно для обновления ПО устройств, но в тоже время хотелось бы чтобы они были защищены от чтения...

А зачем? При прошивке программатором все равно будете делать стирание, которое и сотрет биты защиты, позволив тем самым вам зашить кристалл, а после успешного программирования тем же программатором опять ставите биты защиты. А если обновлять бутлоадером, то там есть отдельные биты защиты области бутлоадера и области программы, прошивку можно поставлять в шифрованном виде а бутлоадер будет ее расшифровывать на лету и зашивать.
lech196
GDI, Большое спасибо за ответ.
Просто считал, что записанные биты защиты стереть уже ничем не удасться :-)
Теперь понятно, что удалить их можно только стерев всю память контроллера и в итоге они свою функцию выполняют...
ivand
Цитата(lech196 @ Aug 3 2007, 17:03) *
удалить их можно только стерев всю память контроллера и в итоге они свою функцию выполняют...


А что, если fuses LockBit1, LockBit2 включить, то даже по параллельному 12-вольтовому подключению нельзя будет прочесть Program Flash?

смущают два обстоятельства:
1. кое что (по SPI) всё же читается, и это "кое что" напоминает исходные данные, например, одинаковые байты будут одинаково другими, как будто поXORили одним и тем же байтом.
2. в параллельном программировании доступны дополнительные возможности: Chip Erase, установка SPIEN...
GDI
залоченная прошивка читается через один байт. т.е. к примеру 0x77, 0x77 читается как 0x00, 0x77 и т.д., т.е. каждый второй байт обнуляется... может не 0, конечно, я просто не помню, но это никак не XOR и с реальными данными это число не имеет никакой связи. С параллельным программатором дела никогда не имел - но думаю что там то же самое... прочитать от тоже не сможет.
fmdost
ИМХО. Хилый по сути poniprog требует чтобы ножки ISP были свободны.
Думаю вам лучше всё таки собрать схему STK200-300 из схем на AVReal. Тем более что она поддерживается средой CAVR даже с обееми перемычками (STK200 и STK300). Плюс есть возможшость импортировать fuse. И всё это наглядно. Правда там тоже "галки перепутаны".
999
добрый день, есть у кого-нить скрин пони с заводскими настроиками 16 меги?
Andrew O. Shadoura
Да, популярный вопрос.
Цитата
====================================================================
Area: RU.EMBEDDED
From: Andrew O. Shadoura(2:4500/1.25)
To: Konstantin Granitsa(2:5085/131.249)
Subj: Configuration and Security bits
Date: 06.07.07 12:18:41
====================================================================
Пpиветствую, Konstantin!

Однажды, 02.07.2007 22:03:29, Konstantin Granitsa писал к All
по поводу "Configuration and Security bits".

KG> Hе подскажет ли добpоуважаемый АЛЛ какой сабж
KG> выставлять для меги 16 в Понипpог?

KG> если:
KG> 1) пpогpамма без загpузочного блока
KG> 2) пpогpамма без стоpожевого таймеpа
KG> 3) сpедств отладки у меня нет
KG> 4) защита от чтения/записи не нужна
KG> 5) Пpошивка pаботает с SPI

Хватит к SPIEN добавить CKOPT, BOOTSZ1, BOOTSZ0.

KG> спpавки в самой пpоге на это нет - написано смотpи
KG> датащит девайса... английский знаю, но сильно не бегло ...

Учи :-)

-- С уважением, Andrew O. Shadoura

np: Royal Philharmonic Orchestra - Scotland the brave

AKAs: 2:4500/1.25, 2:450/202.25

--- WP/95 Rel 1.78E (215.0) Reg.
* Origin: Knowledge itself is a power (2:4500/1.25)
=============================== END ================================


--
WBR, Andrew
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.