|
|
  |
Использование подпрограмм, 128Мега |
|
|
|
Aug 15 2005, 06:04
|

Местный
  
Группа: Свой
Сообщений: 208
Регистрация: 22-11-04
Пользователь №: 1 190

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

Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544

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

Группа: Свой
Сообщений: 36
Регистрация: 23-03-05
Из: Санкт-Петербург
Пользователь №: 3 617

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

Местный
  
Группа: Свой
Сообщений: 208
Регистрация: 22-11-04
Пользователь №: 1 190

|
Цитата(BorisRozentsvaig @ Aug 15 2005, 09:23) Посмотри Fuse "ATMega103 Compatibility Mode" - он должен быть выключен, иначе с подпрограммами, скорее всего, работать не будет! Атмел AtMega128 почему-то всегда поставляет с включенным этим флагом. Да, действительно такой фьюз у меня включен. Сейчас отключу. ОГРОМНОЕ СПАСИБО!!!
|
|
|
|
|
Aug 15 2005, 06:33
|
Знающий
   
Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317

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

Группа: Свой
Сообщений: 56
Регистрация: 25-06-05
Пользователь №: 6 300

|
Напиши маленькую программу типа поморгать портом с подпрограммой и проинициализированным стеком. Если она будет работать, то у тебя почти наверняка некорректная работа с подпрограммами. Например вызвал подпрограмму и вернулся по rjmp, или не вызвав подпрограмму пришел к ее концу ret. Последнее часто бывает, если подпрограммы оформить по тексту в месте, куда программа может залететь без вызова подпрограмм. Поэтому подпрограммы лучше всего положить или в конец за последним rjmp Main или в начале поcле векторов прерываний перед основной программой.
|
|
|
|
|
Aug 16 2005, 10:39
|
Участник

Группа: Свой
Сообщений: 36
Регистрация: 23-03-05
Из: Санкт-Петербург
Пользователь №: 3 617

|
Цитата(tonjo @ Aug 16 2005, 11:18) Спасибо всем кто откликнулся, в особенности BorisRozentsvaig. Он был полностью прав - надо было отключить ATMega103 Compatibility Mode и все зарулило! Да не за что  Всегда рад помочь.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|