[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Программа для 8515 управляет четырьмя одинаковами объектами. В программе был определен массив из 4 структур. Структура очень наглядно описывала суть объекта. В произвольный момент времени в программе оказывались запрещенными прерывания и кранты системе.
Причина - неправильное восстановление SREG при выходе прерываний. Никакие манипуляции с размерами стеков результате не дали. Все заработало само после того как массив структур был превращен в группу массивов. Программа потеряла наглядность и читаемость, но приобрела работоспособность.
Избегайте определять структуры в программах, а тем более массивы структур. Компилятор пишет совершенно умопомрачительный код для нахождения адреса переменной в ОЗУ.
Если кто-то изучал эту проблему подробнее - поделитесь пожалуйста.
E-mail: info@telesys.ru