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

На сайте атмел есть AN AVR093: Replacing AT90S1200 by ATtiny2313, там подробно описаны все отличия.
Hmm
Добавьте в начале команду настройки стека.
sav6622
Цитата(Hmm @ Aug 29 2006, 23:12) *
Добавьте в начале команду настройки стека.


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


Незнаю как там в ponyprog. Но тебе надо оставить галку только на SPIEN. Проще сделай так: считай фузы посмотри как стоит бит на SPIEN, а остальные поставь на обратное значение. P.S. SPIEN не трогай, а то придеться искать паралельный программатор.
Old1
Цитата(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 wink.gif )
При программировании фузов понипрогом нужно помнить, что установленная галка напротив имени фуза означает его программирование в 0.

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

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

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

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

В AT90S1200 аппаратный стек, а в ATTiny2313 нет, его надо при старте устоновить используя следующие команды:
ldi tmp,low(RAMEND)
out SPL,tmp
Также надо проверить, что там твориться с прерываниями, хотя думаю можно сначало только выстовить стек
Old1
Цитата(Terapefft @ Sep 5 2006, 14:03) *
там на программаторе стоит какой то на 10 МГц, но я не знаю как проверить подключен он или нет, просто программатор самодельный какой то, был сделан задолго до моего прихода на эту работу. я вот седня пробовал новый микроконтроллер программировать, сначала прошил фузы, а затем нажал write programm в итоге все нормально прошилось, появилось сообщение write sucsesful, но когда я вставил его на плату индикации то ни фига опять не показывало. может на плате индикации что нить надо сделать? ее разрабатывали для s1200, там еще схема сброса стоит, я уже пробовал и с ней и без нее, когда без нее я просто ресет через резистор на питание вешал, но все равно ничего не получаеца. что можно еще попробовать?

А на плате индикации какой кварц стоит? и стоит ли он там вообще? (может s1200, от RC генератора тактируется?) Фузы по AVR093 программируют тиню на работу с кварцем 3...8МГц .

Цитата
я программу вобще не трогал....разве в ней надо что нить изменять?

См. посты Семёна.

Цитата
и еще вопрос относительно фузов: почему в ponyprog не изменяется SPIEN? ведь в AVR093 написано что там должен быть 0.

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

Судя вот по этому:
Цитата
на плате индикации нету кварца...

S1200 работала от RC генератора (1МГц). (В этой связи понятны манипуляции ваших предшественников с программатором Picprog- это они программировали фуз RCEN в S1200, который доступен только при параллельном программировании.) А значит заводские фузы тини 2313 трогать всетаки не нужно smile.gif.
Проанализируйте программу S1200 и выясните использовались ли прерывание от переполнения таймера 0 и прерывание от аналогового компаратора. У тини2313 вектора этих прерываний находятся по другим адресам. Если хотябы одно из этих прерываний задействовано, то ИМХО проще будет перекомпилировать проект под тиню. Кроме того у тини отличается доступ к ЕЕПРОМ, на это тоже надо обратить внимание.
Alex_Pol
Цитата(Old1 @ Sep 7 2006, 21:13) *
Проанализируйте программу S1200 и выясните использовались ли прерывание от переполнения таймера 0 и прерывание от аналогового компаратора. У тини2313 вектора этих прерываний находятся по другим адресам. Если хотябы одно из этих прерываний задействовано, то ИМХО проще будет перекомпилировать проект под тиню. Кроме того у тини отличается доступ к ЕЕПРОМ, на это тоже надо обратить внимание.

Исходник в студию. Чтобы воду в ступе не толочь. smile.gif З.Ы. Мне бы на асме.
Terapefft
[/quote]
Исходник в студию. Чтобы воду в ступе не толочь. smile.gif З.Ы. Мне бы на асме.
[/quote]
как его выложить? может я вам на мыло лучше пришлю?
Alex_Pol
Валяй. :-)
Alex_Pol
Получил. Дык она вообще не компилится. Компилятор матерно ругается вот в этом месте:
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
Terapefft, глянь личку.
Andrew_k5
Зашил в тини2313 запрет на внешний сброс и он перестал распознаваться авреалом. Что можно предпринять. Программирую через "проводки".
Wild007
Цитата(Andrew_k5 @ Feb 15 2007, 11:57) *
Зашил в тини2313 запрет на внешний сброс и он перестал распознаваться авреалом. Что можно предпринять. Программирую через "проводки".

Теперь поможет только паралельный програматор. sad.gif Им перешить фузы и можно опять будет вернуться к последовательному програматору на "проводках". smile.gif
Vladim
to Andrew_k5
При программировании по SPI вывод RESET используется для ввода в режим
программирования. Если Вы запретили внешний сброс, то как правильно советуют
в предыдущем посте - ищите параллельный программатор.
Andrew_k5
Спасибо за ответ, а как понимать 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
Да, похоже парвллельный программатор не поможет.
Andrew_k5
Подскажите как правильно выставить фузы в тини2313 чтобы работала от внешнего кварца на частоте более 10 мгц и распознавалась авреалом и программировании по "проводкам". И еще есть ли способ сбросить флэшь память атмела.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.