реклама на сайте
подробности

 
 
> FATAL ERROR: Too deeply nested macro calls(16), AVR Studio. Не могу найти строку, вызывающую ошибку.
Alt.F4
сообщение May 23 2011, 17:52
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



Добрый день.
AVR Studio выдает ошибку FATAL ERROR: Too deeply nested macro calls(16)
У меня два варианта причины ошибки:
1) очень много вложенных друг в друга макросов (у меня максимум 3)
2) очень далеко расположен макрос от вызывающей его строки (менял расположение .include'ов - результат отрицательный)
Как найти строку, вызывающую ошибку?
Спасибо.
з.ы. AVR Assembler ver.2
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
V_G
сообщение May 23 2011, 22:43
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Так у вас написано, что вложенных вызовов 16, а не 3.

Еще раз проверьте число вложенных макросов именно в той строке, на которую указывает ассемблер. Считаются не только макросы, напрямую вызываемые из макроса, но и например, если в макросе есть команда CALL func, а в подпрограмме func есть свои макросы
Go to the top of the page
 
+Quote Post
Alt.F4
сообщение May 24 2011, 03:47
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



Цитата
Еще раз проверьте число вложенных макросов именно в той строке, на которую указывает ассемблер.
В том то и дело, что ассемблер не указывает ни одной строки, а просто пишет ошибку.
Буду вечером пытаться компилировать методом исключения, удаляя куски кода.

Сообщение отредактировал Alt.F4 - May 24 2011, 03:48
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение May 24 2011, 06:00
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Студия какая?


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
V_G
сообщение May 24 2011, 09:39
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Кстати, можно включить генерацию листинга, и посмотреть, где там вываливается эта ошибка.
И еще ее очень легко вызвать, сделав в двух макросах перекрестный вызов (из первого - второй, а из второго - первый)
Go to the top of the page
 
+Quote Post
Alt.F4
сообщение May 24 2011, 14:36
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



Цитата
Студия какая?
Самая последняя, Version 4.18 Build 716
Цитата
Кстати, можно включить генерацию листинга, и посмотреть, где там вываливается эта ошибка.
По директиве .list почему-то ничего не создается

Чуть позже:
Найшов бага
Код
.macro EE_write
    sbic    EECR,EEPE;ждем завершен предыдущ операции записи    
    rjmp    EE_write;
    out        EEARH,ZH;грузим адрес в EEPROM
    out        EEARL,ZL;
    out        EEDR,temp;грузим символ из temp
    cli
    sbi        EECR,EEMPE;разрешаем
    sbi        EECR,EEPE;пишем
    sei
.endmacro
rjmp EE_write! Просто когда-то это была подпрограмма...

з.ы. И зачем я только тему создавал... 01.gif

Сообщение отредактировал Alt.F4 - May 24 2011, 19:18
Go to the top of the page
 
+Quote Post
777777
сообщение May 27 2011, 06:48
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Скорее всего макрос случайно оказался рекурсивным.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 21:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.01507 секунд с 7
ELECTRONIX ©2004-2016