[an error occurred while processing this directive] [an error occurred while processing this directive]
Непонятное поведение IAR C 2.26 для AVR
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено ПАП 25 февраля 2002 г. 15:29

Программа для 8515 управляет четырьмя одинаковами объектами. В программе был определен массив из 4 структур. Структура очень наглядно описывала суть объекта. В произвольный момент времени в программе оказывались запрещенными прерывания и кранты системе.
Причина - неправильное восстановление SREG при выходе прерываний. Никакие манипуляции с размерами стеков результате не дали. Все заработало само после того как массив структур был превращен в группу массивов. Программа потеряла наглядность и читаемость, но приобрела работоспособность.
Избегайте определять структуры в программах, а тем более массивы структур. Компилятор пишет совершенно умопомрачительный код для нахождения адреса переменной в ОЗУ.
Если кто-то изучал эту проблему подробнее - поделитесь пожалуйста.

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

Ответы



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

E-mail: info@telesys.ru