|
Конфигурационные биты и биты защиты Для Mega16, Работаем с PonyProg2000 |
|
|
|
Jul 5 2007, 05:03
|

Местный
  
Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596

|
Я раньше работал с 51 серией - сейчас потребовалось больше производительности - перешел на AVR... Выбрал МК ATmega16 написал и прогнал на эмуляторе прошивку, собрал SPI внутрисхемный программатор, залез в енет скачал PonyProg2000, но совершенно непонятно как выставлять конфигурационные биты и биты защиты Для Mega16 на PonyProg2000.... Из прочитанного стало ясно, что разные фирмы под включением/отключением битов подразумевают разное... (например по Атмелу включённые биты = 0 , а отключённые = 1 ) А при неправильном выставлении МК можно откачать только высоковольтным программированием... (А у меня такого программатора нет ) Вопрос - как выставить (какие ставить галки в PonyProg2000) конфигурационные биты и биты защиты Для Mega16 ? В общем: 1) Сторожевым таймером я не пользуюсь... 2) Загрузочного сектора (само программирования) у меня нет3) Отключать методы программирования МНЕ НЕ НАДО4) Устанавливать запрет чтения/записи МНЕ тоже НЕ НАДО5) кварц внешний (11,0592)
Сообщение отредактировал QuickWitted - Jul 5 2007, 05:04
--------------------
|
|
|
|
|
Jul 5 2007, 06:23
|
Местный
  
Группа: Свой
Сообщений: 234
Регистрация: 30-03-07
Из: Одесса
Пользователь №: 26 621

|
Да, и следуя дружескому совету от QuickWitted , не забывайте, что внутренний программер у АВРов тактируется от основного генератора и при експириментах с фузами генератора никто не запретит переключить их на работу с внешним генератором, вследствии чего проц тоже станет немым до тех пор, пока ему на XTAL1 не сунуть импульсы с какой-нибудь разумной частотой. Я сую ему с генератора импульсов 1 Мгц, кто-то сует с другой Меги, уже сконфигурированной на работу с внешним кварцем сигнал с лапки XTAL2. Мне уже раза 2-3 приходилось производить подобную процедуру, пользуясь ПониПрогом. Даже если запомнить, что 0 - это имеется ввиду "запрограммировано", то бишь с точки зрения программатора 1, а 1 - "незапрограммировано", т.е. 0. На фига придумали такую путаницу, непонятно, возможно для повышения сбыта. В производство мы вместе с хексом мы отдавали снимок экрана с фузами во избежании путаницы. Сейчас перешли на программирование с помощью Атмеловкого программера - стоит всего $50, а шьет на голову быстрее и с фузами рака мозгов нет.
|
|
|
|
|
Jul 5 2007, 07:53
|

Mute Beholder
  
Группа: Свой
Сообщений: 260
Регистрация: 4-04-07
Из: Третья планета от Солнца
Пользователь №: 26 754

|
Цитата(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.
--------------------
Common sense is not so common.
|
|
|
|
|
Jul 5 2007, 09:56
|

Местный
  
Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596

|
Воз и поныне там Может объясните что и как ставить? Установленная галка => Это 1 => Опция выключена? Про внешний кварц галки на: CKSel1, CKSel3 галки нет на: CKSel0, CKSel2, CKOPT Как отрубить бут область? Т.е прерывания идут сразу после метки сброса... галки на: IVSEL, BOOTSZ1, BOOTSZ0 галки нет на: BOOTRST Время сброса максимальное - 16.0 галки нет на: SUT0, SUT1 Порог напряжения сброса схемы контроля питания = 4в галки нет на: BODLEVEL, BODEN JTAG включён галки нет на: JTAGEN Что ещё забыл? Если не сложно закиньте сюда готовый скрипт от лошади... Что бы не было конфузов, например с тактированием или как вариант посоветуете любой другой софт для программатора под 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 ---------
Сообщение отредактировал QuickWitted - Jul 5 2007, 09:59
--------------------
|
|
|
|
|
Jul 5 2007, 10:24
|

Народный чинитель
  
Группа: Участник
Сообщений: 415
Регистрация: 15-07-05
Пользователь №: 6 811

|
Цитата Установленная галка => Это 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 ---------
|
|
|
|
|
Jul 5 2007, 11:37
|

Местный
  
Группа: Свой
Сообщений: 386
Регистрация: 1-12-05
Пользователь №: 11 639

|
Цитата(QuickWitted @ Jul 5 2007, 12:56)  Воз и поныне там Может объясните что и как ставить? READ-CALIBRATION 0x21FF DATA 3 # <EEProm 8Mhz ERASE-ALL WRITE&VERIFY-ALL А вот с READ-CALIBRATION будьте поосторожней !!!.... Был у меня прикол из-за недопонимания этой процедуры. Суть ее проста - считать значения настройки калибровки внутреннего RC генератора и записать в нужную область памяти ( в данном примере в 0x21FF DATA 3 # <EEProm 8Mhz)... Прикол был в том что у меня фактически перезаписывался файл .hex по адрессу куда указывала READ-CALIBRATION значением калибровочного регистра.... Поведение программы после этого было не предсказуемым Так вот: если вы не используете RC генератор - лучше вообще убрать READ-CALIBRATION или записывать в тот адресс где уж точно нет других данных
|
|
|
|
|
Jul 5 2007, 12:08
|

Местный
  
Группа: Участник
Сообщений: 322
Регистрация: 21-06-07
Из: СНГ
Пользователь №: 28 596

|
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
--------------------
|
|
|
|
|
Jul 6 2007, 03:27
|

Народный чинитель
  
Группа: Участник
Сообщений: 415
Регистрация: 15-07-05
Пользователь №: 6 811

|
Я же уже ответил на вопрос - надо сбросить все галки. И вот Dimmy это подверждает. Цитата(Dimmy @ Jul 5 2007, 16:35)  Отметь для себя, что в пони все наёборот чем в даташите. Т.е. по "нашему" - правильно. Для программирования под кварц 16МГц Mega16 в пони у меня:
CKSEL3,CKSEL2,CKSEL1,CKSEL0 - галка СБРОШЕНА
CKOPT - СБРОШЕНА
JTAGEN - СБРОШЕНА (это значит, что JTAG действительно выключен) Так что, это не пустая болванка, а рабочий скрипт. Подставляете название своих файлов и запускаете его, все будет нормально.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|