Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ошибка в CodeVision?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Maker6
Помогите разобраться с проблемой. Использую Atmega64L и CodeVision 1.24.2
(пробовал и 1.24.6). Наткнулся на некорректный возврат из некоторых своих функций. Причина видится в перетирании адреса возврата из функции (хранится в стеке) при выполнении участка кода кода внутри этой функции. Что-то вроде несимметричного использования PUSH-POP. Все это видно при отладке в AVRStudio по шагам и в симуляторе и через JTAG. Сначала грешил на конкретную библиотечную функцию - sscanf() и перестал ее использовать, но сечас наткнулся на что-то подобное и в другом месте. Есть подозрение что это как-то связано с размером кода - 30% от 64 к

Буду благодарен за любые мысли на эту тему - проект почти готов, поджимает время, времени на освоение других компиляторов нет. :(
-=user=-
1. Отключи оптимизацию
2. Не используй функции работающие напрямую с флеш памятью, например, putsf, lcd_putsf. Из-за них бывают глюки, например переменные меняют свои адреса.
3. Попробуй редактировать асм-код
0men
Размер стека увеличьте. Функции типа printf, scanf жрут его немеряно
vet
Цитата(-=user=- @ Aug 5 2005, 01:35)
2. Не используй функции работающие напрямую с флеш памятью, например, putsf, lcd_putsf. Из-за них бывают глюки, например переменные меняют свои адреса.

вообще-то впервые слышу. putsf - это ж моя любимая функция smile.gif можно пример глюка?
Цитата
Размер стека увеличьте. Функции типа printf, scanf жрут его немеряно

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