Полная версия этой страницы:
AT90S1200 и tiny 2313
Terapefft
Aug 29 2006, 07:34
подскажите пожалуста у меня возникла ситуация: раньше прошивал S1200 но потом их вроде как сняли с производства и теперь у нас на производство закупили тини2313. я пробовал в них зашивать туже програму, он прошивается все нормально никаких ошибок не выдает, но устройство куда он ставится не функционирует вобще(пользуюсь PonyProg). может кто с эти уже сталкивался? подскажите пожалуста что там надо изменить?
Alex_Pol
Aug 29 2006, 07:53
Проверь фусы. Особенно, выбор источника тактирования. З.Ы. Ну вот. 1200 по умолчанию тактируется от кварцевого генератора, а 2313 - от бортового RC с делителем. 1 мГц.
З.З.Ы. С фусами поосторожнее. С непривычки контроллер можно уконтропупить запросто. Потом будешь осваивать параллельный программатор. :-)
С такими вопросами лучше сюда: "Форум разработчиков электроники - Electronics developers forum > Микроконтроллеры (МК) - Microcontrollers (MCs) > AVR"
Цитата(Terapefft @ Aug 29 2006, 10:34)

подскажите пожалуста у меня возникла ситуация: раньше прошивал S1200 но потом их вроде как сняли с производства и теперь у нас на производство закупили тини2313. я пробовал в них зашивать туже програму, он прошивается все нормально никаких ошибок не выдает, но устройство куда он ставится не функционирует вобще(пользуюсь PonyProg). может кто с эти уже сталкивался? подскажите пожалуста что там надо изменить?
На сайте атмел есть AN AVR093: Replacing AT90S1200 by ATtiny2313, там подробно описаны все отличия.
Добавьте в начале команду настройки стека.
sav6622
Aug 29 2006, 20:02
Цитата(Hmm @ Aug 29 2006, 23:12)

Добавьте в начале команду настройки стека.
Лучше пусть прочитает апликейшн, там все толково и понятно расписано, сам адаптировал программу на ассемблере из 1200 в tiny2313 именно по нему, все заработало безупречно и сразу. Правда потом все равно на Си переписал, но это уже другая история
Была и у меня история - вышла из строя 90S1200, прошивка была, а самого чипа уже было трудно найти. Исходных кодов не было (какое то буржуйское у-во). Прямая замена на 90S2313 не работала. С помощью HEX-редактора вставил код перехода, настроил стек и обратный переход. Как и ожидалось все зафункционировало. "Зрить в корень" надо, а остальное, фузы и пр. уже вторично, т.е. само-собой
Terapefft
Aug 31 2006, 13:31
А какие фузы надо выставить при прошивании в ponyprog?
Цитата(Terapefft @ Aug 31 2006, 17:31)

А какие фузы надо выставить при прошивании в ponyprog?
Незнаю как там в ponyprog. Но тебе надо оставить галку только на SPIEN. Проще сделай так: считай фузы посмотри как стоит бит на SPIEN, а остальные поставь на обратное значение. P.S. SPIEN не трогай, а то придеться искать паралельный программатор.
Цитата(Terapefft @ Aug 31 2006, 16:31)

А какие фузы надо выставить при прошивании в ponyprog?
Для того, чтобы подсказать как программировать фузы, нужно знать от чего тактировалась Ваша S1200. Хотя, если при прошивке S1200, заводские фузы не менялись, то фузы tyny2313 нужно выставлять так:
SPMEN = 1
DWEN = 1
EESAVE=1
SPIEN=0
WDTON=1
BODLEVEL2=1
BODLEVEL1=1
BODLEVEL0=1
RSTDISBL=1
CKDIV8=1
CKOUT=1
SUT1=0
SUT0=1
CKSEL3=1
CKSEL2=1
CKSEL1=0
CKSEL0=0
(что черным по белому написано в AVR093

)
При программировании фузов понипрогом нужно помнить, что установленная галка напротив имени фуза означает его программирование в 0.
2
Семён Понипрогом изменить состояние SPIEN нужно еще умудриться, поскольку этот фуз недоступен при последовательном программировании.
Terapefft
Sep 1 2006, 07:59
я установил фузы как написано в AVR093 он вроде прошивает, но в конце пишет write failure и вобще нифига не работает. когда прошивали s1200, то сначала в Picprog записывали параметр SEL_RC, а потом заливали в него прогу в ponyprog. Объсните пожалуста что это значит, просто я совсем недавно столкнулся с микроконтроллерами.... буду очень признателен
Цитата(Terapefft @ Sep 1 2006, 10:59)

я установил фузы как написано в AVR093 он вроде прошивает, но в конце пишет write failure и вобще нифига не работает. когда прошивали s1200, то сначала в Picprog записывали параметр SEL_RC, а потом заливали в него прогу в ponyprog. Объсните пожалуста что это значит, просто я совсем недавно столкнулся с микроконтроллерами.... буду очень признателен
write failure пишет в конце программирования фузов или программы?
Terapefft
Sep 4 2006, 07:35
write failed пишет после програмирования програмы. может я что не правильно делаю? я сначала выставляю фузы, прошиваю, затем открываю прогу и жму write all и вот после этого выдает это сообщение
Цитата(Terapefft @ Sep 4 2006, 10:35)

write failed пишет после програмирования програмы. может я что не правильно делаю? я сначала выставляю фузы, прошиваю, затем открываю прогу и жму write all и вот после этого выдает это сообщение
Не спросил в прошлый раз: в процессе программирования кварц подключен к тине2313? Если нет, то
попробуйте подключить кварц 3...8МГц и повторите попытку запрограммировать программу (Write Progam).
Или если есть под рукой еще один контроллер с заводскими фузами, то сначала залейте прогу, а потом программируйте фузы.
Terapefft
Sep 5 2006, 11:03
там на программаторе стоит какой то на 10 МГц, но я не знаю как проверить подключен он или нет, просто программатор самодельный какой то, был сделан задолго до моего прихода на эту работу. я вот седня пробовал новый микроконтроллер программировать, сначала прошил фузы, а затем нажал write programm в итоге все нормально прошилось, появилось сообщение write sucsesful, но когда я вставил его на плату индикации то ни фига опять не показывало. может на плате индикации что нить надо сделать? ее разрабатывали для s1200, там еще схема сброса стоит, я уже пробовал и с ней и без нее, когда без нее я просто ресет через резистор на питание вешал, но все равно ничего не получаеца. что можно еще попробовать?
Цитата(Terapefft @ Sep 5 2006, 15:03)

там на программаторе стоит какой то на 10 МГц, но я не знаю как проверить подключен он или нет, просто программатор самодельный какой то, был сделан задолго до моего прихода на эту работу. я вот седня пробовал новый микроконтроллер программировать, сначала прошил фузы, а затем нажал write programm в итоге все нормально прошилось, появилось сообщение write sucsesful, но когда я вставил его на плату индикации то ни фига опять не показывало. может на плате индикации что нить надо сделать? ее разрабатывали для s1200, там еще схема сброса стоит, я уже пробовал и с ней и без нее, когда без нее я просто ресет через резистор на питание вешал, но все равно ничего не получаеца. что можно еще попробовать?
Если контролер порошился это, значит, что программа в память загружена и не более того. Ты уверен, что правильно модифицировал саму программу и не где не ошибся? Если правил в HEX-редакторе, то мог спокойно испортить весь код. Теперь маленькое предложение: "Если надо сделать быстро, то за небольшое вознаграждение могу переделать код. От тебя только требуется прислать мне HEX файл. Если согласен пиши в личку".
Terapefft
Sep 5 2006, 12:39
я программу вобще не трогал....разве в ней надо что нить изменять? и еще вопрос относительно фузов: почему в ponyprog не изменяется SPIEN? ведь в AVR093 написано что там должен быть 0.
Цитата(Terapefft @ Sep 5 2006, 16:39)

я программу вобще не трогал....разве в ней надо что нить изменять? и еще вопрос относительно фузов: почему в ponyprog не изменяется SPIEN? ведь в AVR093 написано что там должен быть 0.
В AT90S1200 аппаратный стек, а в ATTiny2313 нет, его надо при старте устоновить используя следующие команды:
ldi tmp,low(RAMEND)
out SPL,tmp
Также надо проверить, что там твориться с прерываниями, хотя думаю можно сначало только выстовить стек
Цитата(Terapefft @ Sep 5 2006, 14:03)

там на программаторе стоит какой то на 10 МГц, но я не знаю как проверить подключен он или нет, просто программатор самодельный какой то, был сделан задолго до моего прихода на эту работу. я вот седня пробовал новый микроконтроллер программировать, сначала прошил фузы, а затем нажал write programm в итоге все нормально прошилось, появилось сообщение write sucsesful, но когда я вставил его на плату индикации то ни фига опять не показывало. может на плате индикации что нить надо сделать? ее разрабатывали для s1200, там еще схема сброса стоит, я уже пробовал и с ней и без нее, когда без нее я просто ресет через резистор на питание вешал, но все равно ничего не получаеца. что можно еще попробовать?
А на плате индикации какой кварц стоит? и стоит ли он там вообще? (может s1200, от RC генератора тактируется?) Фузы по AVR093 программируют тиню на работу с кварцем
3...8МГц .
Цитата
я программу вобще не трогал....разве в ней надо что нить изменять?
См. посты
Семёна.
Цитата
и еще вопрос относительно фузов: почему в ponyprog не изменяется SPIEN? ведь в AVR093 написано что там должен быть 0.
Он (ноль) там и есть иначе понипрогом ничего не зашилось бы, поскольку понипрог программирует по SPI. А изменить его понипрогом нельзя, потому что SPIEN недоступен при последовательном программировании.
Terapefft
Sep 6 2006, 04:37
на плате индикации нету кварца это точно, подскажите пожалуйста наиболее оптимальный вариант для этой ситуации? может если туда кварц поставить все заработает?
Alex_Pol
Sep 6 2006, 07:53
Дева Мария, пресвятая богородица, заступница. Вам который день
рассказывают. Во - первых. В самое начало программы вставьте конструкцию вида:
ldi R16,low(RAMEND) ; настройка стека
out SPL,R16
Во вторых, проверьте установку фузов.
Потом, прочтите атмеловский пдф под названием :"Replacing AT90S1200_by_ATtiny2313.pdf"
Если не можете сами отрихтовать программу, пришлите hex - файл. Я вам на шару эти 2 оператора добавлю.
В догонку можете прислать схему самого дивайса.
З.Ы. Сам с 1200 не работал, но в атмеловском пдф есть какая то неясная угроза насчёт отличия электрических параметров. Хотя, думаю, что это неважно.
Terapefft
Sep 7 2006, 10:54
я уже добавил настройку стэка, пробовал и с заводскими установками фузов и выставлял как в AVR093 написано, все равно нифига не работает, а s1200 все нормально работает. что можно еще попробовать?
Цитата(Terapefft @ Sep 7 2006, 13:54)

я уже добавил настройку стэка, пробовал и с заводскими установками фузов и выставлял как в AVR093 написано, все равно нифига не работает, а s1200 все нормально работает. что можно еще попробовать?
Судя вот по этому:
Цитата
на плате индикации нету кварца...
S1200 работала от RC генератора (1МГц). (В этой связи понятны манипуляции ваших предшественников с программатором Picprog- это они программировали фуз RCEN в S1200, который доступен только при параллельном программировании.) А значит заводские фузы тини 2313 трогать всетаки не нужно

.
Проанализируйте программу S1200 и выясните использовались ли прерывание от переполнения таймера 0 и прерывание от аналогового компаратора. У тини2313 вектора этих прерываний находятся по другим адресам. Если хотябы одно из этих прерываний задействовано, то ИМХО проще будет перекомпилировать проект под тиню. Кроме того у тини отличается доступ к ЕЕПРОМ, на это тоже надо обратить внимание.
Alex_Pol
Sep 7 2006, 22:27
Цитата(Old1 @ Sep 7 2006, 21:13)

Проанализируйте программу S1200 и выясните использовались ли прерывание от переполнения таймера 0 и прерывание от аналогового компаратора. У тини2313 вектора этих прерываний находятся по другим адресам. Если хотябы одно из этих прерываний задействовано, то ИМХО проще будет перекомпилировать проект под тиню. Кроме того у тини отличается доступ к ЕЕПРОМ, на это тоже надо обратить внимание.
Исходник в студию. Чтобы воду в ступе не толочь.

З.Ы. Мне бы на асме.
Terapefft
Sep 8 2006, 05:05
[/quote]
Исходник в студию. Чтобы воду в ступе не толочь.

З.Ы. Мне бы на асме.
[/quote]
как его выложить? может я вам на мыло лучше пришлю?
Alex_Pol
Sep 8 2006, 07:14
Валяй. :-)
Alex_Pol
Sep 8 2006, 09:31
Получил. Дык она вообще не компилится. Компилятор матерно ругается вот в этом месте:
prt1:
ldi tmp1,$0f ;
cp T2L,tmp1 ;
breq p_rcorr ;
ldi tmp1,$27 ;
cpc T2H,tmp1 ;
brcc p_rcorr ;
cp T3H,tmp1 ;
brcc p_rcorr ;
ldi tmp1,1 ;
cp T4H,tmp1 ; Здесь!
brcc p_rcorr ;
ldi tmp1,4 ;
cp T4L,tmp1 ;
brcc p_rcorr ;
rjmp begin ;
И правильно делает. Т4Н не определён. Если эту программу как нить откомпилить, работать всё равно не будет. Так как там должно быть на самом деле?
Да, и ещё. Если вы ожидаете, что по прерыванию таймера у вас отработает процедура tim_0, то этого не случится никогда.
Ещё раз, внимательно AVR093 стр.2, 3; таблица 3.
Это я ещё до работы с EEPROM не добрался.
Alex_Pol
Sep 8 2006, 13:10
Terapefft, глянь личку.
Andrew_k5
Feb 15 2007, 12:57
Зашил в тини2313 запрет на внешний сброс и он перестал распознаваться авреалом. Что можно предпринять. Программирую через "проводки".
Wild007
Feb 15 2007, 16:54
Цитата(Andrew_k5 @ Feb 15 2007, 11:57)

Зашил в тини2313 запрет на внешний сброс и он перестал распознаваться авреалом. Что можно предпринять. Программирую через "проводки".
Теперь поможет только паралельный програматор.

Им перешить фузы и можно опять будет вернуться к последовательному програматору на "проводках".
Vladim
Feb 16 2007, 02:47
to Andrew_k5
При программировании по SPI вывод RESET используется для ввода в режим
программирования. Если Вы запретили внешний сброс, то как правильно советуют
в предыдущем посте - ищите параллельный программатор.
Andrew_k5
Feb 16 2007, 19:46
Спасибо за ответ, а как понимать Errata на тини2313, где написано следующее:
Parallel Programming does not work
Parallel Programming is not functioning correctly. Because of this, reprogramming
of the device is impossible if one of the following modes are selected:
– In-System Programming disabled (SPIEN unprogrammed)
– Reset Disabled (RSTDISBL programmed)
Так как помогает параллельное программирование или контроллер на елку можно повесить.
Vladim
Feb 16 2007, 20:11
Да, похоже парвллельный программатор не поможет.
Andrew_k5
Feb 19 2007, 17:34
Подскажите как правильно выставить фузы в тини2313 чтобы работала от внешнего кварца на частоте более 10 мгц и распознавалась авреалом и программировании по "проводкам". И еще есть ли способ сбросить флэшь память атмела.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.