Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Использование подпрограмм
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
tonjo
У меня проблема: пишу проект на асме для 128Меги с использованием подпрограмм, все компилируется Ок, зашиваю проект в контроллер-не работает.Тот же самый код, только не в подпрограммах также компилируется, прошиваю - ВСЁ РАБОТАЕТ! Кто-нибудь сталкивался с подобным? Что возможно не так я делаю. Может это компилятор грешит? (Делаю в AVR Studio 4.07). Помогите пожалуйста!!!
Igor26
Цитата(tonjo @ Aug 15 2005, 08:48)
У меня проблема: пишу проект на асме для 128Меги с использованием подпрограмм, все компилируется Ок, зашиваю проект в контроллер-не работает.Тот  же самый код, только не в подпрограммах  также компилируется, прошиваю - ВСЁ РАБОТАЕТ! Кто-нибудь сталкивался с подобным? Что возможно не так я делаю. Может это компилятор грешит? (Делаю в AVR Studio 4.07). Помогите пожалуйста!!!
*

А вначале программы стек инициируеш?
tonjo
Цитата(Igor26 @ Aug 15 2005, 08:54)
А вначале программы стек инициируеш?
*


Да, конечно. Причем этот проект для 103Меги работал безупречно.
Igor26
Цитата(tonjo @ Aug 15 2005, 09:04)
Цитата(Igor26 @ Aug 15 2005, 08:54)
А вначале программы стек инициируеш?
*


Да, конечно. Причем этот проект для 103Меги работал безупречно.
*


Сразу сказать трудно в чем бяка. Как говорится, код в студию! Думаю разберемся.
BorisRozentsvaig
Цитата(tonjo @ Aug 15 2005, 09:48)
У меня проблема: пишу проект на асме для 128Меги с использованием подпрограмм, все компилируется Ок, зашиваю проект в контроллер-не работает.Тот  же самый код, только не в подпрограммах  также компилируется, прошиваю - ВСЁ РАБОТАЕТ! Кто-нибудь сталкивался с подобным? Что возможно не так я делаю. Может это компилятор грешит? (Делаю в AVR Studio 4.07). Помогите пожалуйста!!!
*


Посмотри Fuse "ATMega103 Compatibility Mode" - он должен быть выключен, иначе с подпрограммами, скорее всего, работать не будет!
Атмел AtMega128 почему-то всегда поставляет с включенным этим флагом.
tonjo
Цитата(BorisRozentsvaig @ Aug 15 2005, 09:23)
Посмотри Fuse "ATMega103 Compatibility Mode" - он должен быть выключен,  иначе с подпрограммами, скорее всего, работать не будет!
Атмел AtMega128 почему-то всегда поставляет с включенным этим флагом.
*


Да, действительно такой фьюз у меня включен. Сейчас отключу. ОГРОМНОЕ СПАСИБО!!!
MALLOY2
Цитата(tonjo @ Aug 15 2005, 08:48)
У меня проблема: пишу проект на асме для 128Меги с использованием подпрограмм, все компилируется Ок, зашиваю проект в контроллер-не работает.Тот  же самый код, только не в подпрограммах  также компилируется, прошиваю - ВСЁ РАБОТАЕТ! Кто-нибудь сталкивался с подобным? Что возможно не так я делаю. Может это компилятор грешит? (Делаю в AVR Studio 4.07). Помогите пожалуйста!!!
*


У них немного адресные пространства отличаются, тобиш у меги128 доп регистры введены, может с этим связано, стек может туда попадпет, и еще запрограмируй фуз совместимости с м103 и посмотри как работает.
lolikandr
Напиши маленькую программу типа поморгать портом с подпрограммой и проинициализированным стеком. Если она будет работать, то у тебя почти наверняка некорректная работа с подпрограммами. Например вызвал подпрограмму и вернулся по rjmp, или не вызвав подпрограмму пришел к ее концу ret. Последнее часто бывает, если подпрограммы оформить по тексту в месте, куда программа может залететь без вызова подпрограмм. Поэтому подпрограммы лучше всего положить или в конец за последним rjmp Main или в начале поcле векторов прерываний перед основной программой.
tonjo
Спасибо всем кто откликнулся, в особенности BorisRozentsvaig. Он был полностью прав - надо было отключить ATMega103 Compatibility Mode и все зарулило!
BorisRozentsvaig
Цитата(tonjo @ Aug 16 2005, 11:18)
Спасибо всем кто откликнулся, в особенности BorisRozentsvaig. Он был полностью прав - надо было отключить ATMega103 Compatibility Mode и все зарулило!
*


Да не за что smile.gif Всегда рад помочь. smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.