Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: FATAL ERROR: Too deeply nested macro calls(16)
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Alt.F4
Добрый день.
AVR Studio выдает ошибку FATAL ERROR: Too deeply nested macro calls(16)
У меня два варианта причины ошибки:
1) очень много вложенных друг в друга макросов (у меня максимум 3)
2) очень далеко расположен макрос от вызывающей его строки (менял расположение .include'ов - результат отрицательный)
Как найти строку, вызывающую ошибку?
Спасибо.
з.ы. AVR Assembler ver.2
V_G
Так у вас написано, что вложенных вызовов 16, а не 3.

Еще раз проверьте число вложенных макросов именно в той строке, на которую указывает ассемблер. Считаются не только макросы, напрямую вызываемые из макроса, но и например, если в макросе есть команда CALL func, а в подпрограмме func есть свои макросы
Alt.F4
Цитата
Еще раз проверьте число вложенных макросов именно в той строке, на которую указывает ассемблер.
В том то и дело, что ассемблер не указывает ни одной строки, а просто пишет ошибку.
Буду вечером пытаться компилировать методом исключения, удаляя куски кода.
ILYAUL
Студия какая?
V_G
Кстати, можно включить генерацию листинга, и посмотреть, где там вываливается эта ошибка.
И еще ее очень легко вызвать, сделав в двух макросах перекрестный вызов (из первого - второй, а из второго - первый)
Alt.F4
Цитата
Студия какая?
Самая последняя, 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
777777
Скорее всего макрос случайно оказался рекурсивным.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.