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

 
 
> Ошибка в CodeVision?, Некорректный аозврат из функций
Maker6
сообщение Jul 29 2005, 20:34
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 21-07-05
Пользователь №: 6 996



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

Буду благодарен за любые мысли на эту тему - проект почти готов, поджимает время, времени на освоение других компиляторов нет. :(
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
-=user=-
сообщение Aug 4 2005, 21:35
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 4-08-05
Пользователь №: 7 369



1. Отключи оптимизацию
2. Не используй функции работающие напрямую с флеш памятью, например, putsf, lcd_putsf. Из-за них бывают глюки, например переменные меняют свои адреса.
3. Попробуй редактировать асм-код
Go to the top of the page
 
+Quote Post
0men
сообщение Aug 5 2005, 08:21
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 84
Регистрация: 7-05-05
Пользователь №: 4 819



Размер стека увеличьте. Функции типа printf, scanf жрут его немеряно
Go to the top of the page
 
+Quote Post
vet
сообщение Aug 11 2005, 20:24
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



Цитата(-=user=- @ Aug 5 2005, 01:35)
2. Не используй функции работающие напрямую с флеш памятью, например, putsf, lcd_putsf. Из-за них бывают глюки, например переменные меняют свои адреса.

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

Это да, нужно выставлять маркеры дна стека в свойствах проекта и мониторить на предмет их затирания.


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post

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

 


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


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