Это понятно. Здесь все придется самому делать.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Bill 14 апреля 2005 г. 10:56
В ответ на: Так, Билл, там это делалось автоматически компилятором с выводом системного сообщения на консоль! И стек контролировался. Вот где помощь в отладке. А как, кстати выяснить, если происходит редко? отправлено Vladimir Ljaschko 14 апреля 2005 г. 10:39

А ывяснить придется чисто логическим путем. Можно, опять же, для начала организовать проверку индекса. Можно изменить положение массива или переменной в памяти. Тогда будет видно из-за чего все это происходит.
Если от перемены мест слагаемых сумма не изменится, тогда дело будет в индексе. Если будут затираться другие данные, значит дело не в нем. Возможно, эти данные окажутся рядом со стеком, тогда надо отследить изменение стека.
То, что событие происходит редко, весьма симптоматично. Возможно, это переполнение стека, которое возникает при прерываниях. Обычно это происходит, когда в функциях (или хотя бы в одной) имеется много локальнвх переменных, или массив. Можно уменьшить потребность в стеке, если эти переменные сделать статическими. Можно наоборот, попробовать увеличить размер стековой области.
Да много есть способов разных. Думаю, Вы это и сами знаете не хуже меня.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru